【问题标题】:How to Get Full Resolution & Uncompressed Image Data with Android Camera?如何使用 Android 相机获取全分辨率和未压缩的图像数据?
【发布时间】:2013-10-28 23:25:23
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: android bitmap camera


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢。你的意思是我们不能在大多数设备上使用 android camera api 获取未压缩的图像数据?
    • 你的意思是我们不能在大多数设备上使用 android camera api 获取未压缩的图像数据? 没错。
    • 现在是 2016 年吗?
    • @Mr.Newman,感谢您的提问:时代在变,API 也在变。近 3 年前感觉过时且受限制的相机 API v.1 已被 Google 正式弃用,并引入了新的闪亮的 camera2 API。尽管如此,与这种新 API 兼容的设备的市场份额还不到 50%,KitKat 是当今最受欢迎的单一平台(32%)。此外,大多数 Android 5 设备对 camera2 的支持都被削弱了(又名limited)。
    • @Mr.Newman 试试GitHubYouTube
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多