如何使用Android相机获得全分辨率和未压缩的图像数据?



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

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

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

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

但是,无论如何都可以获得完整尺寸(与捕获的相同)和未压缩(不是JPEG)的图像数据吗?

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

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

最新更新