我现在已经在java中编写了一个基本的无损jpeg joiner东西,但我想将它生成的文件与原始文件进行比较。
我只能在十六进制编辑器中进行比较,有没有人知道一个简单的方法,软件或基于java(最好是软件,因为我现在感觉不再需要编码!)我可以比较两个图像并生成一个像差不一样的“差异图”?
感谢。
答案 0 :(得分:14)
感谢您的建议。
我首先尝试了Gimp方法,除非图像之间的差异非常小,否则效果很好。我找不到“增强差异”选项来使差异明显,而直方图也只能粗略地表示差异。
最后我使用了ImageMagick我刚刚安装过的东西而忘了一切。创建差异/比较图像就像输入一样简单:
compare first.jpg second.png difference.gif
在命令行中。
很好地解释了here.
答案 1 :(得分:5)
TortoiseIDiff是一个免费的图像差异查看器:
http://tortoisesvn.tigris.org/TortoiseIDiff.html
它是TortoiseSVN的一部分,但可以在没有Subversion的情况下使用。
取决于您的项目,而不是所有版本的文件 控件是文本文件。很可能你也会有图像 示例文档/帮助文件的屏幕截图和图表。
对于那些文件,不可能使用常见的文件差异工具, 因为它们只能与文本文件一起使用并逐行进行区分。这是 Tortoise Image Diff工具(TortoiseIDiff)的用武之地 拯救。它可以并排显示两个图像,甚至可以显示图像 彼此alpha混合。
答案 2 :(得分:4)
你可能比Perceptual Diff做得更糟。
答案 3 :(得分:2)
最好的方法是使用Pix for windows(附带DirectX SDK)。支持Bitmap,PNG和Jpeg ......享受!
答案 4 :(得分:1)
使用像Photoshop或Gimp等图像编辑器,它有多个图层。创建一个图像,其中每个源图像位于单独的图层中。
此时,您可以通过关闭和打开顶层的可见性来直观地比较图像。
在大多数体面的编辑器中,您还可以将顶层设置为“差异”模式。现在每个图像像素的值是底层图像中像素值的绝对差值。你可以用例如直方图工具,以查看图像是否相同。如果它们相同,则所有像素值都将为0。
答案 5 :(得分:1)
对于这样的东西,我喜欢netpbm
/ pbmplus
工具包。您可以使用djpeg
和pnmtoplainpnm
将每个图像转换为简单的ASCII格式。然后,您只需读取两个文件并发出一个新图像,该图像显示像素的不同之处。例如,您可以计算旧像素和新像素之间的RGB空间中的欧几里德距离,并发出零差异的白色像素,小差异的浅灰色,较大差异的较暗,等等。 ASCII格式很简单,并且在手册页上有详细记录,所有标准查看器程序都可以直接查看。
答案 6 :(得分:1)
Araxis Merge的最新版本将执行图像差异(http://www.araxis.com/merge/topic_comparing_image_files.html)。
不幸的是,这不是一个免费的应用程序,所以你是否愿意支付它是另一回事......
答案 7 :(得分:0)
还有一个方便的web app called Resemble.js,它可以逐个像素地分析和比较图像。根据您的偏好,图像中的不同像素(如果有)以粉红色或黄色突出显示。