5

我想得到一个全分辨率(而不是压缩)的图像数据,然后我可以做一些图像处理。

据我所知,android api takePicture (shutter, raw, jpg) 可以做一些事情。但我需要的不是压缩的 JPEG 数据,而是未压缩的图像数据。另外我知道原始回调不起作用我读过的一些帖子。

我还找到了 api onPreviewFrame,我从中得到的最大图片尺寸是 1280*720(使用 setPreviewSize),而我从相机捕获的原始图像的分辨率是 1952*3264。

此外, Intent.putExtra(MediaStore.EXTRA_OUTPUT, uri) 可能会有所帮助,但 uri 的文件可能应该是压缩格式的 jpeg 文件。

但是无论如何要获得全尺寸(与捕获的相同)和未压缩(不是JPEG)的图像数据?

4

1 回答 1

4

takePicture() 的文档清楚地表明可以请求原始数据,但回调是可选的。今天,大多数设备不支持原始回调。这应该不足为奇:现代相机在硬件中执行 Jpeg 压缩,相机和应用处理器之间的内存总线无法足够快地处理 24 兆字节的原始数据(对于普通的 8 兆像素相机而言)。

避免使用预览回调而不是 takePicture() 的诱惑:即使在相同的分辨率下,静态图片的图像质量也会更好。预览图像可能具有不精确的自动对焦、稳定、曝光甚至白平衡。

于 2013-10-20T19:22:41.013 回答