使用 ImageMagick 去除 Alpha 效果很差,但仅限于白色背景

使用 ImageMagick 去除 Alpha 效果很差,但仅限于白色背景

当将 PDF(仅包含白色文本的黑色文本)转换为 PNG 并使用 ImageMagick(Ubuntu 14.04 的版本 6.7.7.10)删除透明度时,我发现抗锯齿质量出现了令人惊讶的变化。

pdflatex我的示例输入文件是运行的结果

\documentclass[preview]{standalone}
\begin{document}
Hello, world!
\end{document}

在 300 dpi 下,结果很糟糕(带有白色背景,添加-background \#ffffff-background white产生视觉上无法区分的输出):

convert -density 300 -alpha remove -alpha off a.pdf 300-white.png

-密度300

有一些抗锯齿功能,但不是很好,并且一些线条(例如 上的水平描边e)完全消失了。

选择白色以外的任何颜色都会产生不错的效果。

convert -density 300 -background \#fffffe -alpha remove -alpha off a.pdf 300-fffffe.png

-密度 300 -背景#fffffe

奇怪的是,低分辨率下的渲染效果更好(虽然仍然不理想)——至少文本是可读的。

convert -density 100 -alpha remove -alpha off a.pdf 90-white.png

-密度100

在更高的分辨率下,渲染效果仍然明显较差,但至少线条开始出现。

convert -density 750 -alpha remove -alpha off a.pdf a.png

-密度750

  • 为什么抗锯齿对于白底黑字来说如此糟糕,而对于任何其他背景颜色却完美无缺,即使该背景颜色在视觉上与白色没有区别?
  • 如果我将其设置为自动化过程的一部分,而没有人在场目视检查结果,那么我需要避免哪些参数才能获得良好的结果?

答案1

就像当背景为白色时,ImageMagick 检测到只有两种颜色 - 黑色和白色 - 并切换到 PNG 的灰度模式,因此出现丑陋的结果:

在此输入图像描述

为了限制将黑白应用于抗锯齿边缘的丑陋,您可以使用以下命令禁用抗锯齿+antialias

convert -density 300 -alpha remove -alpha off +antialias a.pdf 300-white.png

在此输入图像描述

那么现在,如何防止使用灰度PNG 模式?这里是:

convert -density 300 -alpha remove -alpha off a.pdf png24:300-white-24.png

在此输入图像描述

相关内容