Ghostscript的颜色检测(Ghostscript color detection)

2019-06-27 21:38发布

我似乎无法找到的Ghostscript是否能够简单地检测作业是否是彩色或灰度。 我使用Ghostscript的打印作业,以PNG的转换,但我也需要有对工作的颜色信息,所以我没有通过像素再次搜索它的像素。

Answer 1:

所谓A(比较新)Ghostscript的设备inkcov (你需要的Ghostscript v9.05以上版本)可以可靠地检测PDF页面是否使用颜色或没有。

它显示了油墨覆盖的CMYK油墨,分别对每个单页(用于RGB颜色的,但它确实无声转换为CMYK色彩空间内部)。

探讨并展示其功能,首先生成借助Ghostscript帮助一个例子PDF:

gs                                                                     \
  -o color-or-grayscale-test.pdf                                       \
  -sDEVICE=pdfwrite                                                    \
  -g5950x2105                                                          \
  -c "/F1 {10 80 moveto /Helvetica findfont 64 scalefont setfont} def" \
  -c "F1                         (100% 'pure' black)    show showpage" \
  -c "F1 .5 .5 .5   setrgbcolor  ( 50% 'rich' rgbgray)  show showpage" \
  -c "F1 .5 .5 .5 0 setcmykcolor ( 50% 'rich' cmykgray) show showpage" \
  -c "F1 .5         setgray      ( 50% 'pure' gray)     show showpage"

虽然所有的页面都出现在人眼不使用任何色彩可言,2,3页确实从颜色搭配其明显的灰度值。 但是,没有任何一个颜色是直接可见的(除非你的显示器是严重错误调整)。

看看生成的PDF页面(通过网络转换成PNG更容易显示):

在印前行业,经常使用的“富二代”黑色或灰色的阴影。 成语“富人”黑色或灰色是用来表达一个事实,即这些阴影不是从单纯的黑色碳粉或墨水制成,但有颜色的混合式组件,以使它们显得更加辉煌,更加饱和。

现在检查每个页面的油墨覆盖率:

gs  -o - -sDEVICE=inkcov color-or-grayscale-test.pdf
 [...]
 Page 1
  0.00000  0.00000  0.00000  0.05040 CMYK OK
 Page 2
  0.05401  0.05401  0.05401  0.05401 CMYK OK
 Page 3
  0.05799  0.05799  0.05799  0.00000 CMYK OK
 Page 4
  0.00000  0.00000  0.00000  0.04541 CMYK OK

(用于各个颜色信道A的1.00000映射到100%的油墨覆盖值。所以0.05040在结果的第一行是指5.04 %的页区域由黑色墨水覆盖。)因此,通过的Ghostscript的给出的结果inkcov是完全预期之一:

  • 页1 + 4不使用任何C(青色),M(品红),Y(黄色)颜色的,但只有K(黑色)。
  • 页2 + 3都在所有使用C(青色),M(品红),Y(黄色)颜色的墨,但没有K(黑色)。

现在,让我们转换原始的PDF使用的所有页面DeviceGray色彩空间:

gs                                \
  -o only-black-ink.pdf           \
  -sDEVICE=pdfwrite               \
  -dColorConversionStrategy=/Gray \
  -dProcessColorModel=/DeviceGray \
   color-or-grayscale-test.pdf

...并检查再次油墨覆盖:

gs -q  -o - -sDEVICE=inkcov only-black-ink.pdf | grep -v Page
  0.00000  0.00000  0.00000  0.05040 CMYK OK
  0.00000  0.00000  0.00000  0.05401 CMYK OK
  0.00000  0.00000  0.00000  0.05799 CMYK OK
  0.00000  0.00000  0.00000  0.04541 CMYK OK

同样,正是预期的结果在成功的颜色转换的情况下!



Answer 2:

新的输出设备已使这个答案已经过时,见接受的答案。


直到2011年,该文件需要被光栅化成看到的输出。 由于PDF / PS是什么样的文件看起来像其光栅化的同时获取呈现容貌的描述。 即使你能做到这一点与ghostscipt我相信这将需要光栅化/解释文件第一次,然后查看输出,所以如果你有PNG的你还不如自己做,这将是较少CPU处理密集与GS再次文件。



文章来源: Ghostscript color detection