我在相机胶卷中有一张图像。如果图像和 md5 校验和它,我会得到数据表示。我们将图像作为 img0.jpg 写入文档目录 删除原始图像并使用 ALAssetLibrary 的 writeImageDataToSavedPhotosAlbum 将数据表示写回相机胶卷。
查看相册,图像看起来是一样的。再次从相机胶卷中读取新保存的图像。
预期结果 - 计算 md5。实际结果 - 不同的 md5。
保存此文件以及 img2.jpg
Hexdump 两者,看看有什么区别:
Dans-Mac:Desktop dan$ hexdump img1.jpg | head
0000000 ff d8 ff e1 26 31 45 78 69 66 00 00 4d 4d 00 2a
0000010 00 00 00 08 00 05 01 1a 00 05 00 00 00 01 00 00
0000020 00 4a 01 1b 00 05 00 00 00 01 00 00 00 52 01 28
0000030 00 03 00 00 00 01 00 02 00 00 02 13 00 03 00 00
0000040 00 01 00 01 00 00 87 69 00 04 00 00 00 01 00 00
0000050 00 5a 00 00 00 b4 00 00 00 48 00 00 00 01 00 00
0000060 00 48 00 00 00 01 00 07 90 00 00 07 00 00 00 04
0000070 30 32 32 31 91 01 00 07 00 00 00 04 00 00 00 00
0000080 a0 00 00 07 00 00 00 04 30 31 30 30 a0 01 00 03
0000090 00 00 00 01 00 01 00 00 a0 02 00 04 00 00 00 01
Dans-Mac:Desktop dan$ hexdump img2.jpg | head
0000000 ff d8 ff e1 26 31 45 78 69 66 00 00 4d 4d 00 2a
0000010 00 00 00 08 00 05 01 1a 00 05 00 00 00 01 00 00
0000020 00 4a 01 1b 00 05 00 00 00 01 00 00 00 52 01 28
0000030 00 03 00 00 00 01 00 02 00 00 02 13 00 03 00 00
0000040 00 01 00 01 00 00 87 69 00 04 00 00 00 01 00 00
0000050 00 5a 00 00 00 b4 00 00 00 48 00 00 00 01 00 00
0000060 00 48 00 00 00 01 00 07 90 00 00 07 00 00 00 04
0000070 30 32 32 31 91 01 00 07 00 00 00 04 00 00 00 01
0000080 a0 00 00 07 00 00 00 04 30 31 30 30 a0 01 00 03
0000090 00 00 00 01 00 01 00 00 a0 02 00 04 00 00 00 01
如果您查看第 0000070 行,最后一个字符会有所不同。某些图像(大多数)会发生这种情况,但并非所有图像都经过测试。在这种特殊情况下,标题中只有一个字符差异,但测试的其他图像更糟糕,因为很多数据都不同。
iOS上有什么方法可以将实际图像数据写入未受污染的照片库吗?在我将图像保存到照片库后,我的应用程序正在做的事情依赖于 md5 校验和。