最简单、立即可用的方法:使用图像魔术师compare https://imagemagick.org/script/compare.php(也适用于 Windows/Linux/Mac 等)。
它甚至可以比较 PDF 页面(尽管它使用 Ghostscript 作为其delegate首先将 PDF 页面渲染为像素图像):
compare.exe ^
tested.pdf[0] ^
reference.pdf[0] ^
-compose src ^
delta.pdf
所结果的delta.pdf
会将每个像素描绘为红色,在两个比较的 PDF 页面之间具有不同的颜色。所有相同的像素都将是纯白色的。这[0]
tell compare
使用每个文件的第一页进行比较(页数从零开始)。
您可以通过以下示例了解这是如何实现的:
compare.exe ^
http://qtrac.eu/boson1.pdf[1] ^
http://qtrac.eu/boson2.pdf[1] ^
-compose src ^
delta.pdf
以下是各个页面(转换为缩小的 PNG 以供网页显示)。参考页面在左侧,修改后的页面在中间,“delta-pixel-are-red”图像在右侧:
通过跳过,您可以获得略有不同的视觉结果-compose src
范围。然后,您将获得原始文件的像素作为灰色阴影背景(用于上下文),增量像素为红色:
compare.exe ^
http://qtrac.eu/boson1.pdf[1] ^
http://qtrac.eu/boson2.pdf[1] ^
delta.pdf
如果您不喜欢像素差异的红色,请使用-highlight-color
:
compare.exe ^
http://qtrac.eu/boson1.pdf[1] ^
http://qtrac.eu/boson2.pdf[1] ^
-highlight-color green ^
delta.pdf
用于渲染 PDF 页面的默认分辨率是 72 dpi。如果您需要更高的精度,可以使用以下命令切换到 300 dpi-density
参数如下:
compare.exe ^
-density 300 ^
http://qtrac.eu/boson1.pdf[1] ^
http://qtrac.eu/boson2.pdf[1] ^
delta.pdf
Note,切换到更高的密度会减慢进程并创建更大的文件。
您甚至可以为增量图像创建一个 *.txt 文件,该文件描述每个像素的坐标和各自的颜色值:
compare ^
http://qtrac.eu/boson1.pdf[1] ^
http://qtrac.eu/boson2.pdf[1] ^
-compose src ^
-highlight-color black ^
delta.txt
然后简单地计算总像素数与黑色像素数(抱歉,这是 Unix/Linux/MacOSX 语法):
total_pixels=$(( $(cat delta.txt | wc -l) - 1))
black_pixels=$(( $(grep black delta.txt | wc -l) -1 ))
在上面的插图中使用的示例中,我得到
total_pixels=500990
black_pixels=8727
当然“理想”的结果是
black_pixels=0