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

标签 android bitmap camera

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

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

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

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

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

最佳答案

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

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

关于android - 如何使用 Android 相机获取全分辨率和未压缩的图像数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19478101/

相关文章:

android - 使用方法 -canvas.drawBitmap(bitmap, src, dst, paint)

java - 返回 super.onOptionsItemSelected(item);没有调用父方法

java - 使用 OpenGL ES 2.0 在 Android 中高效绘制许多纹理

android - 如何使用 Intent 在 Android 上选择文件

android - createBitmap(int width, int height, Bitmap.Config config) 如何填充Bitmap?

Android:通用图像加载器加载大图像

ios - 有没有办法以编程方式将 iOS 设备的相机焦点设置为无限远?

swift - ARKit – 渲染距离超过 1000 米的物体

android - 多个 Android 设备上的远程网络摄像机视频

android - zxing:创建要在 ImageView 中使用的 ean_13 条形码