【问题标题】:New image taken with camera different than same image loaded from camera roll?使用相机拍摄的新图像与从相机胶卷加载的相同图像不同?
【发布时间】:2026-01-29 12:20:27
【问题描述】:

当我得到用户用相机拍摄的新图像并保存其校验和时,当用户稍后从相机胶卷重新加载相同的图像时,校验和不同。会不会是因为相机胶卷里保存的图片是JPG格式的,有损,所以像素不一样?我正在尝试使用校验和来检测它是否是相同的图像:知道如何克服这种情况吗?我是否需要自己将其保存为 JPG,然后将其读入内存,以便获得与稍后从相机胶卷中获得的相同字节?如果我这样做,我还需要确保我保存与相机胶卷相同的 JPG 格式...

谢谢! 帕特里克

【问题讨论】:

    标签: iphone camera uiimagepickercontroller


    【解决方案1】:

    我不是 iPhone 专家,但我知道保存 JPEG 时,有许多“质量”参数,如果将图像编码为 JPEG 格式,参数略有不同,像素值也会有所不同。

    因此,除非您能找到一种方法以完全使用与相机胶卷相同的过程可靠地将图像转换为 JPEG,否则自己将图像转换为 JPEG 并没有多大用处。

    如果可以读取相机胶卷中图像的创建时间,或者一些类似的元数据,这可能是一个更好的方法。

    【讨论】:

    • 我想我可以检查相机应用程序创建的 JPG 文件并尝试确定它使用的参数 - 如果相机应用程序改变了它保存图像的方式,这会使我面临破坏该功能的风险,但我可以忍受它。另一个想法:不只是计算一些图像区域的平均值,我可以按照我的方式为整个图像创建一个 JPG,不管相机应用程序使用什么来创建它的 JPG 文件,然后将我的 JPG 的校验和与我的比较JPG 我之前为同一张图片保存的。应该可以正常工作,我猜只会影响性能。
    【解决方案2】:

    返回图像的 API 会返回来自相机的原始数据,或从库中转换为原始数据的图像。

    正如您所猜测的那样,JPG 过程是有损的,因此即使图像大小相同,原始数据也会有所不同。

    您可能最好在几个固定位置取一个区域的平均值并将其用作校验和,但当然这很容易产生误报,因此您需要小心操作。

    【讨论】:

      最近更新 更多