一种简单的方法(工具?)来比较不同格式的像素像素?

好吧,我现在已经在java中编写了一个基本的无损jpeg joiner东西,但我想将它生成的文件与原始文件进行比较。

我只能在hex编辑器中进行比较,有没有人知道一个简单的方法,软件或基于java(最好是软件,因为我现在感觉不再需要编码!)我可以比较两个图像并产生一个“差异图” “像素不一样的地方?

谢谢。

谢谢你的建议。

我首先尝试了Gimp方法,除非图像之间的差异很小,否则效果很好。 我找不到“增强差异”选项来使差异明显,直方图也只能粗略地表示差异。

最后,我使用了ImageMagick ,我刚刚安装了一些东西而忘了一切。 创建差异/比较图像就像输入一样简单:

compare first.jpg second.png difference.gif 

在命令行中。

这一切都很好地解释了。

TortoiseIDiff是一个免费的图像差异查看器:

http://tortoisesvn.tigris.org/TortoiseIDiff.html

它是TortoiseSVN的一部分,但可以在没有Subversion的情况下使用。

根据您的项目,并非所有受版本控制的文件都是文本文件。 您很可能也会有图像,例如文档/帮助文件的屏幕截图和图表。

对于那些文件,不可能使用常见的文件差异工具,因为它们只能与文本文件一起使用并逐行进行差异化。 这里是Tortoise Image Diff工具(TortoiseIDiff)来救援的地方。 它可以并排显示两个图像,甚至可以显示彼此α混合的图像。

你可能比Perceptual Diff做得更糟。

最好的方法是使用Pix for windows(附带DirectX SDK)。 支持Bitmap,PNG和Jpeg …享受!

使用像Photoshop或Gimp等图像编辑器,它有多个图层。 创建一个图像,其中每个源图像位于单独的图层中。

此时,您可以通过关闭和打开顶层的可见性来直观地比较图像。

在大多数体面的编辑器中,您还可以将顶层设置为“差异”模式。 现在每个图像像素的值是底层图像中像素值的绝对差值。 您可以使用例如直方图工具来查看图像是否相同。 如果它们相同,那么所有像素值都将精确为0。

对于这样的东西,我喜欢netpbm / pbmplus工具包。 您可以使用djpegpnmtoplainpnm将每个图像转换为简单的ASCII格式。 然后,您只需读取两个文件并发出一个新图像,该图像显示像素的不同之处。 例如,您可以计算旧像素和新像素之间的RGB空间中的欧几里德距离,并发出零差异的白色像素,小差异的浅灰色,较大差异的较暗,等等。 ASCII格式很简单,并且在手册页上有详细记录,所有标准查看器程序都可以直接查看。

最新版本的Araxis Merge将执行图像差异( http://www.araxis.com/merge/topic_comparing_image_files.html )。

不幸的是,这不是一个免费的应用程序,所以无论你是否愿意支付它是另一回事……

还有一个名为Resemble.js的便捷网络应用程序 ,它逐个像素地分析和比较图像。 图像中的不同像素(如果有)根据您的喜好以粉红色或黄色突出显示。