java.util.zip.CRC32比较图像文件

java.util.zip.CRC32比较图像文件,java,crc32,image-comparison,Java,Crc32,Image Comparison,是否有任何建议(一段代码)可以帮助我理解如何比较两个不同的图像文件,无论它们是否相同 提前谢谢 编辑: 我的意思是,例如,我应该用文件的大小检查来检查CRC32(我不知道怎么做)。那就意味着它们是相同的图片 EDIT2:当我说图像相同时,我的意思是图像对用户来说完全相同。您可以使用CRC32对任何文件求和。然而,如果你想知道两个图像是否相同,你必须决定两个看起来相同的图像是否相同。e、 g.以下图像都有不同的尺寸,更不用说不同的CRC32编号了 zip条目的校验和的含义是:不同的文件不同 该类

是否有任何建议(一段代码)可以帮助我理解如何比较两个不同的图像文件,无论它们是否相同

提前谢谢

编辑: 我的意思是,例如,我应该用文件的大小检查来检查CRC32(我不知道怎么做)。那就意味着它们是相同的图片


EDIT2:当我说图像相同时,我的意思是图像对用户来说完全相同。

您可以使用CRC32对任何文件求和。然而,如果你想知道两个图像是否相同,你必须决定两个看起来相同的图像是否相同。e、 g.以下图像都有不同的尺寸,更不用说不同的CRC32编号了


zip条目的校验和的含义是:不同的文件不同

该类允许您自己计算字节的校验和


要有效地检查两个图像是否几乎相等,有很多种方法,比如制作一个小的8x8图像并比较颜色值的差异。

如果进行有损压缩,则需要定义“相同”的含义。两个图像可以与人眼完全相同,但一个可以是另一个的一半。是的,图像文件的CRC只会告诉您该文件是否可能与同一文件的另一个副本相同。它不会告诉你里面的图像是否可能是相同的,文件是单独创建的。@Peter请参见编辑的问题如果你使用CRC32检查,你是在检查它们是否完全相同。这意味着两张包含相同信息且看起来相同的图片将不会是“相同”的。CRC32将为您提供不同的编号,即使附加到图像的元数据顺序不同(您甚至看不到)。谢谢Peter,我必须先给出详细信息;简言之,哪张图片对最终用户来说是一样的,对我来说也是一样的!所以你们提供的图像对我来说是一样的:)因此我理解CRC32是不够的?那么你有什么建议来满足我的需求呢?谢谢。你需要将它们转换成普通格式(通常是未压缩的位图),然后比较像素,看看它们是否相似。e、 g.用颜色
sqrt(和(x1-x2))
计算距离,当这个数字为0时,它们实际上是相同的。如果数字很小(你必须决定是什么),它们是相同的,当数字很大时,它们不是。这将是一个难以分类的灰色区域。您可能还需要变换图像,例如缩放和裁剪,例如,如果图像有一个额外的空行,则即使其大小不同,也是相同的。;)要比较图像,看它们是否“看起来”相同,必须使用相对复杂的信号处理技术。在那里你会问更多的问题。