我想获得完整分辨率(而非压缩)的图像数据,然后我可以进行一些图像处理。
据我所知,android api takePicture(快门,原始,jpg)可以做点什么。但我需要的不是压缩的JPEG数据,而是未压缩的图像数据。而且我知道原始回调不会根据我读过的一些帖子工作。
我也找到了api onPreviewFrame,我从中得到的最大图片大小为1280 * 720(使用setPreviewSize),而我从相机拍摄的原始图像的分辨率为1952 * 3264.
此外,Intent.putExtra(MediaStore.EXTRA_OUTPUT,uri)可能会有所帮助,但uri的文件可能应该是一个压缩格式的jpeg文件。
但无论如何要获得完整尺寸(与拍摄时相同)和未压缩(非JPEG)图像数据?
答案 0 :(得分:4)
takePicture()的文档明确指出可以请求原始数据,但回调是可选的。今天,大多数设备不支持原始回调。这应该不足为奇:现代相机在硬件中执行Jpeg压缩,相机和应用处理器之间的内存总线无法足够快地处理24兆字节的原始数据(适用于适度的800万像素相机)。
避免使用预览回调而不是takePicture()的诱惑:即使在相同的分辨率下,静态图片的图像质量也会更好。预览图像可能具有不精确的自动对焦,稳定,曝光甚至白平衡。