Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将YUV图像格式转换为PNG_Android_Yuv - Fatal编程技术网

Android 将YUV图像格式转换为PNG

Android 将YUV图像格式转换为PNG,android,yuv,Android,Yuv,我正在努力让YuvImage在Android 5.0.1设备上使用png图像格式,其中png显示为绿色图像。在安卓5.1.1上,这并没有发生,图像显示的也很好。 过了一段时间,我发现Android 5.0.1中有一个bug,它使转换后的图像显示为绿色。这在Android 5.1.1中得到了修复 但是,有人知道解决方案吗,以便在未安装此修复程序的设备上运行此功能?我认为没有办法解决此问题,因为根据我的经验,系统生成的图像已经是绿色的,并且这不是转换为PNG的问题 我从您的评论回复中看到您正在使用C

我正在努力让YuvImage在Android 5.0.1设备上使用png图像格式,其中png显示为绿色图像。在安卓5.1.1上,这并没有发生,图像显示的也很好。 过了一段时间,我发现Android 5.0.1中有一个bug,它使转换后的图像显示为绿色。这在Android 5.1.1中得到了修复


但是,有人知道解决方案吗,以便在未安装此修复程序的设备上运行此功能?

我认为没有办法解决此问题,因为根据我的经验,系统生成的图像已经是绿色的,并且这不是转换为PNG的问题

我从您的评论回复中看到您正在使用Camera 2 API,并且由于您使用的是YUV格式,我相信您正在尝试从相机的连续馈送保存图像(与全分辨率拍照相反)。如果是这种情况,我建议尽可能使用旧的Camera API,因为我还没有见过以YUV格式(NV21)捕获预览图像时不工作的设备,该格式可以轻松转换为PNG,尽管需要经过JPEG步骤:

YuvImage yuvImage = new YuvImage(nv21bytearray, ImageFormat.NV21, width, height, null);
ByteArrayOutputStream os = new ByteArrayOutputStream();
yuvImage.compressToJpeg(new Rect(0, 0, width, height), 100, os);
byte[] jpegByteArray = os.toByteArray();
Bitmap bitmap = BitmapFactory.decodeByteArray(jpegByteArray, 0, jpegByteArray.length);
FileOutputStream fos = new FileOutputStream(Environment.getExternalStorageDirectory() + "/imagename.png");
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();

使用
nv21bytearray
作为旧的camera API方法返回的NV21字节数组。

您使用的是camera 2 API还是旧的?@silvaren我使用的是camera 2 API添加了不推荐使用的camera API。因此,只有使用5.1.1及以上版本的设备才会使用Camera2 API。