Ghostscript tiffg3 灰色=黑色

Posted

技术标签:

【中文标题】Ghostscript tiffg3 灰色=黑色【英文标题】:Ghostscript tiffg3 gray=black 【发布时间】:2013-02-08 01:32:59 【问题描述】:

尝试获取 pdf 并将其转换为 tiff,但将所有灰度变为纯黑色。换句话说,如果它不是白色的,它应该是黑色的。 tiffg3 设备是 1 位的,但它仍然是灰色并试图伪造它。

示例命令:

gs -dQUIET -dNOPAUSE -dBATCH -r200 -sPAPERSIZE=letter -sDEVICE=tiffg3 -sOutputFile=out.tiff in.pdf

示例输入:

示例输出:

期望的输出:

【问题讨论】:

【参考方案1】:

1 位设备使用半色调(又称加网)仅使用黑白像素来表示灰色阴影。这就是它的意图,它的不是打算改变颜色。

您可以通过多种方式在 PostScript 中伪造您想要的内容(重新定义 setgray 是一种方法,也是设置传递函数),但 PDF 不是一种编程语言,因此这种方法实际上并不奏效。

您可以使用自定义 ICC 配置文件对灰度值进行颜色校正,使它们全为黑色。 Ghostscript 版本 9 及更高版本使用 Little CMS 作为色彩管理系统,并具有您可以覆盖的“默认”灰色 ICC 配置文件。据推测,构建一个将白色以外的任何东西映射到纯黑色的配置文件可能很容易。然而,这不是我的领域。您还需要考虑这将如何影响(例如)图像。

Ghostscript 中还有基于对象类型的附加控件,因此您可以选择仅将此转换应用于文本或线条。 理想情况下,您应该返回原始文档,在那里进行修改,然后制作一个新的 PDF。

【讨论】:

ICC 配置文件有什么好的起点吗?我一直在谷歌搜索,但这也不是我的领域......谢谢,【参考方案2】:

您可以为此使用从 imagemagick 转换,使用标志级别。例如将图像转换为纯黑/白,将灰度分成两半:

转换-level 50%,50% file.pdf blackwhite.pdf

然后将其传递给 GS。不过,我对传真的建议是保留部分灰度,因为许多文档都依赖于它的易读性:

转换 -density 816x784 -level 55%,95% file.pdf blackwhite.pdf

这个会留下 40% 的灰度,将 0-55 范围内的每个点转换为黑色(即 0 黑色和 100 白色),并将 95-100 范围内的所有内容转换为白色,您可以使用它并获得最佳匹配。稍后在 GS 中转换为 tiffg3 时,密度标志将对其有所帮助,从而在生成的 tif 中提供更好的质量。

【讨论】:

以上是关于Ghostscript tiffg3 灰色=黑色的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用ghostscript删除pdf中文本块的背景

带有灰色和黑色虚线的线图

如何用黑色填充灰色空间? SwiftUI

带有黑色外边框但内边框为灰色的表格

为啥我的引导 btn 反转按钮显示为灰色而不是黑色渐变?

如何使用ps在LAB模式下设置图片中黑色、白色、灰色色阶。如何确定特定区域色阶值