好吧,我现在已经在 java 中编写了一个基本的无损 jpeg 连接器,但我想将它生成的文件与原始文件进行比较。
我只能在十六进制编辑器中比较这么多,有没有人知道一种简单的方法,基于软件或基于 Java 的(最好是软件,因为我现在不想再编码了!)我可以比较两个图像并生成“差异图” “哪里的像素不一样?
谢谢。
好吧,我现在已经在 java 中编写了一个基本的无损 jpeg 连接器,但我想将它生成的文件与原始文件进行比较。
我只能在十六进制编辑器中比较这么多,有没有人知道一种简单的方法,基于软件或基于 Java 的(最好是软件,因为我现在不想再编码了!)我可以比较两个图像并生成“差异图” “哪里的像素不一样?
谢谢。
感谢您的建议。
我首先尝试了 Gimp 方法,该方法效果很好,除非图像之间的差异非常小。我找不到“增强差异”选项来使差异明显,直方图也只能粗略表示差异。
最后,我使用了ImageMagick,这是我前段时间安装的,但我忘记了。创建差异/比较图像就像键入一样简单:
compare first.jpg second.png difference.gif
在命令行中。
这一切都很好地解释了here。
TortoiseIDiff 是一个免费的图像差异查看器:
http://tortoisesvn.tigris.org/TortoiseIDiff.html
它是 TortoiseSVN 的一部分,但可以在没有 Subversion 的情况下使用。
根据您的项目,并非所有受版本控制的文件都是文本文件。很可能您也会有图像,例如文档/帮助文件的屏幕截图和图表。
对于这些文件,不可能使用通用文件比较工具,因为它们只能处理文本文件并逐行比较。这是 Tortoise Image Diff 工具 (TortoiseIDiff) 的用武之地。它可以并排显示两个图像,甚至可以将图像显示在彼此之间进行 alpha 混合。
你可以做的比Perceptual Diff差很多。
最好的方法是使用 Pix for windows(随 DirectX SDK 提供)。支持位图、PNG 和 Jpeg...享受吧!
使用像 Photoshop 或 Gimp 之类的具有多个图层的图像编辑器。创建一个图像,其中每个源图像位于一个单独的图层中。
此时,您可以通过关闭和打开顶层的可见性来直观地比较图像。
在大多数体面的编辑器中,您还可以将顶层设置为“差异”模式。现在每个图像像素的值是基础图像中像素值的绝对差。您可以使用例如直方图工具来查看图像是否相同。如果它们相同,则所有像素值都将为 0。
最新版本的 Araxis Merge 将进行图像差异 ( http://www.araxis.com/merge/topic_comparing_image_files.html )。
不幸的是,它不是一个免费的应用程序,所以你是否愿意为此付费是另一回事......
还有一个名为 Resemble.js 的便捷网络应用程序,它可以逐个像素地分析和比较图像。根据您的喜好,图像中的不同像素(如果有)以粉红色或黄色突出显示。