复制具有不同的MD5校验和

时间:2013-01-04 09:15:58

标签: java android checksum duplicate-removal

WhatsApp在共享时创建重复的图像副本。虽然图像的分辨率相同,但原始图像的MD5校验和及其副本是不同的。为什么是这样?如何让我的应用程序意识到这是一个重复的图像。

我尝试过MD5和Sha-1,两种算法都为这两个图像生成了不同的校验和。

1 个答案:

答案 0 :(得分:1)

听起来元数据可能存在差异 - 例如在复制时,WhatsApp服务器可能已经更改了时间戳。

我建议您检索图像的像素数据并运行校验和。您可以使用Bitmap.getPixels()方法。例如:myBitmap.getPixels(pixels, 0, myBitmap.getWidth(), 0, 0, myBitmap.getWidth(), myBitmap.getHeight());

请记住,仅仅因为校验和是相同的,并不一定意味着图像!如果校验和匹配,则必须逐个元素地比较数据,以确保图像完全相同。

修改 有一个很好的例子,说明如何对像素here进行逐像素测试。请注意,如果您使用的是API 12 +,则可以使用Bitmap.sameAs()方法。