打印PostScript文件时出现纹理条纹

3

我正在使用PostScript语言来描述一个均匀排列的点阵页面。这些点的分辨率为600dpi,也就是说一英寸内有600个点。在PostScript中,我使用一位来表示每个点,1代表空白,0代表黑色点。

我的一个点阵单元的PostScript文件:

%% SetPageSize
/setPageSize {<</PageSize [595 842] >> setpagedevice} def
setPageSize
%% Dot Code
gsave
/mm {2.834645 mul} def
1 mm 1 mm translate
5.76 5.76 scale
48 48 1 [48 0 0 -48 0 48]
{<
fff7ff7ff7ff
ffffffffffff
ffffffffffff
fdffffffffff
ffffffffff7f
ffffffffffff
ffffffffffff
ffffffffffff
fffff7ffffff
fffffffdffff
ffffffffffff
ffffffffffff
7ff7ff7ff7ff
ffffffffffff
ffffffffffff
ffffffffffff
ffffffffffff
ffffffffffff
fffefffffeff
ffffffffffff
f7ffffff7fff
ffffffffffff
ffffffffffff
ffffffffffff
7ff7ff7ff7ff
ffffffffffff
ffffffffffff
fffffffdffff
fffff7ffffff
ffffffffffff
ffbfffffffff
ffffffffffff
fffffffffff7
ffffffffffff
ffffffffffff
ffffffffffff
7ff7ff7ff7ff
ffffffffffff
ffffffffffff
ffffffffffff
f7ffffffffff
ffffffffffff
fffffffffffb
ffffffffffff
ffffffff7fff
7fffdfffffff
ffffffffffff
ffffffffffff
>}
image
grestore
  • 以上代码表示的是一个点单位,该单位在600dpi中为2.03mm*2.03mm

  • translate用于将用户空间移动到所需位置,例如:

    • 假设一个单位在(1mm, 1mm)的位置。

    • 它的右边的单位在(3.03mm, 1mm)的位置。

    • 它的上方的单位在(1mm, 3.03mm)的位置。

  • scale用于将输出的dpi更改为600。因子通过72*48/600 = 5.76计算。

  • 矩阵48 48 1 [48 0 0 -48 0 48]垂直和水平扫描像素。

  • 最后的image结构表示点的二进制值,以十六进制编写。

这些点可以使用GhostScript或Adobe-Illustrator打开,并在监视器上显示得非常清晰和明显。

AI中放大4800%的样本点。

enter image description here

然而,打印的点会出现纹理条纹。我使用的打印机是喷墨打印机Cannon ip2780和激光打印机FX DocuPrint CP105b。

600dpi(激光)的打印结果。垂直纹理条纹比800dpi不明显。 enter image description here

800dpi(激光)的打印结果。垂直纹理条纹更加明显。第2、4、6行比第1、3、5行浅。尽管如此,点的密度应该是相同的。 enter image description here

800dpi(喷墨)的打印结果。水平和垂直纹理条纹。 enter image description here

有人能解释一下打印机的奇怪行为是如何发生的吗?或者我组成点单位的方法是错误的。

  1. 我能使用translate来频繁地移动用户空间,特别是位置为浮点数时(精度是否足够)?

  2. 我能使用scale手动将dpi更改为600。有没有改变输入dpi的方法?

提前感谢!


1
我唯一的猜测是你在与内置的半色调机器进行斗争。Postscript 主要旨在将实际点抽象出来。我不知道该如何解决这个问题。 - luser droog
2个回答

3
您所看到的是信号混叠,更准确地说是一种莫尔纹理。发生的原因是您打印的点并没有完全对齐打印机的点阵(屏幕)。
不同的打印机具有不同的屏幕,您的像素以不同的方式与它们对齐。因此,有时您的点会分布在两个打印机像素上,有时则不会。如果您真的想这么做,那么每个设备都应该需要自己的半色调模式。
进一步阅读:

0
joojaa是对的,这是600到800 dpi之间的干涉图案。你需要找到一个更高分辨率的打印机,或者降低点阵图案的分辨率。尝试通过逐步减少图像数组中的数字48 [48 0 0 -48 0 48],每次减少5或10个单位,然后再次打印,直到图案消失,那将是你的打印机能做到的最好效果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接