gpt4 book ai didi

pdf - PDF 文件的视觉差异以确定像素完美度

转载 作者:行者123 更新时间:2023-12-03 11:39:31 24 4
gpt4 key购买 nike

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

7年前关闭。




Improve this question




我需要使用 MS Reporting Services 重构一些报告(使用 Jasper 生成)。原始报告的副本以 PDF 格式提供。要求是让新报告“像素完美”,这很麻烦......

为了让生活更轻松,我想要一个工具来覆盖原始和生成的报告 PDF,以测量它们是否像素完美。

有这样的工具吗?

最佳答案

执行此操作的最简单、立即可用的方法:使用 ImageMagick's compare (这也适用于 Windows/Linux/Mac 和其他)。

它甚至可以比较 PDF 页面(尽管它使用 Ghostscript 作为其代理首先将 PDF 页面渲染为像素图像):

 compare.exe         ^
tested.pdf[0] ^
reference.pdf[0] ^
-compose src ^
delta.pdf

由此产生的 delta.pdf将每个像素描绘为红色,在两个比较的 PDF 页面之间具有不同的颜色。所有相同的像素将是纯白色的。 [0]告诉 compare使用每个文件的第一页进行比较(页数从零开始)。

您可以通过以下示例了解这是如何工作的:
 compare.exe                      ^
http://qtrac.eu/boson1.pdf[1] ^
http://qtrac.eu/boson2.pdf[1] ^
-compose src ^
delta.pdf

这是相应的页面(已转换为缩小的 PNG 以供 Web 显示)。引用页在左边,修改后的页面在中间,'delta-pixel-are-red'图像在右边:

first page second page delta image

跳过 -compose src 可以获得略有不同的视觉效果范围。然后,您将获得原始文件的像素作为灰色阴影背景(用于上下文),增量像素为红色:
 compare.exe                      ^
http://qtrac.eu/boson1.pdf[1] ^
http://qtrac.eu/boson2.pdf[1] ^
delta.pdf

first page second page 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。如果您需要更高的精度,可以使用 -density 切换到 300 dpi参数如下:
 compare.exe                      ^
-density 300 ^
http://qtrac.eu/boson1.pdf[1] ^
http://qtrac.eu/boson2.pdf[1] ^
delta.pdf

注意,切换到更高的密度会减慢进程并创建更大的文件。

您甚至可以为 delta 图像创建一个 *.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

关于pdf - PDF 文件的视觉差异以确定像素完美度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12460577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com