数据字节数组大小onPictureTaken和previewFrame不同 [英] data byte array size different for onPictureTaken and onPreviewFrame

查看:1181
本文介绍了数据字节数组大小onPictureTaken和previewFrame不同的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为什么数据字节数组大小onPictureTaken(字节[]数据,摄像头摄像头)和previewFrame(字节[]数据,摄像头摄像头)不同。前者有原始图像,因此给了我一个干净的形象,后者给了我一个像素化图像。我不使用onPictureTaken,因为它不会触发有时。
如果我的图像尺寸是1600×1400的屏幕尺寸为800×480
onPictureTaken给了我1600×1400

在previewFrame给了我800×480

这是我的code:

  mCamera.setOneShot previewCallback(新相机。previewCallback(){
            @覆盖
            在previewFrame(字节[]数据,相机摄像头){公共无效
                Camera.Parameters参数= camera.getParameters();
                INT格式= parameters.get previewFormat();
                // YUV格式需要更多的转换
                如果(格式== || ImageFormat.NV21格式== || ImageFormat.YUY2格式== ImageFormat.NV16){
                    。INT W = parameters.get previewSize()宽度;
                    。INT H = parameters.get previewSize()高度;
                    //获取YUV图像
                    YuvImage yuv_image =新YuvImage(数据,格式,W,H,NULL);
}

我一直坚持这个问题的一个星期。

P.S。 - 在负面评价的情况下,请说明理由。


解决方案

  

为什么数据字节数组大小onPictureTaken(字节[]数据,摄像头摄像头)和previewFrame(字节[]数据,摄像头摄像头)不同。


由于它们是具有在不同的编码不同的分辨率不同的图像。这将是一个小小的奇迹,如果他们的的大小相同。


  

,前者具有原始图像,因此给了我一个干净的形象,后者给了我一个像素化图像


preVIEW帧通常是低质量的,因为它们需要在速度的高速率被捕获


  

我不使用onPictureTaken,因为它不会触发有时


虽然我也遇到过与相机API的许多问题,是不是其中之一。


  

在previewFrame给了我800×480


您指定<一的preVIEW分辨率href=\"http://developer.android.com/reference/android/hardware/Camera.Parameters.html#set$p$pviewSize%28int,%20int%29\"相对=nofollow> 集previewSize() Camera.Parameters

Why is the data byte array size different for onPictureTaken(byte[] data, Camera camera) and onPreviewFrame(byte[] data, Camera camera). The former has the original image and hence gives me a clean image and the latter gives me a pixelated image. I am not using onPictureTaken because it does not get triggered sometimes. If my picture size is 1600 x 1400 and screen size is 800 x 480 onPictureTaken gives me 1600 x 1400 and onPreviewFrame gives me 800 x 480

This is my code:

mCamera.setOneShotPreviewCallback(new Camera.PreviewCallback() {
            @Override
            public void onPreviewFrame(byte[] data, Camera camera) {
                Camera.Parameters parameters = camera.getParameters();
                int format = parameters.getPreviewFormat();
                //YUV formats require more conversion
                if (format == ImageFormat.NV21 || format == ImageFormat.YUY2 || format == ImageFormat.NV16) {
                    int w = parameters.getPreviewSize().width;
                    int h = parameters.getPreviewSize().height;
                    // Get the YuV image
                    YuvImage yuv_image = new YuvImage(data, format, w, h, null);
}

I have been stuck with this issue for one week.

P.S. - In case of negative ratings please state the reason

解决方案

Why is the data byte array size different for onPictureTaken(byte[] data, Camera camera) and onPreviewFrame(byte[] data, Camera camera).

Because they are different images with different resolutions in different encodings. It would be a minor miracle if they were the same size.

The former has the original image and hence gives me a clean image and the latter gives me a pixelated image

Preview frames are generally of lower quality, because they need to be captured at a high rate of speed.

I am not using onPictureTaken because it does not get triggered sometimes

While I have encountered many problems with the camera APIs, that is not one of them.

onPreviewFrame gives me 800 x 480

You specify the preview resolution in setPreviewSize() on Camera.Parameters.

这篇关于数据字节数组大小onPictureTaken和previewFrame不同的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆