我使用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%。
然而,打印的点出现纹理条纹。我使用的打印机是喷墨打印机Cannon ip2780和激光打印机FX DocuPrint CP105b。
600dpi(激光)的打印结果。垂直纹理条纹不如800dpi明显。
800dpi(激光)的打印结果。垂直纹理条纹更明显。 2,4,6号线比1,3,5号线轻。但是点的密度应该相同。
有人可以帮忙解释一下打印机的奇怪行为吗?或者我组成点单位的方式是错误的。
我可以使用translate
频繁移动用户空间,尤其是位置是浮点值(精度是否足够)?
我可以使用scale
手动将dpi更改为600.是否有任何方法可以更改输入dpi?
提前致谢!
答案 0 :(得分:3)
您所看到的是信号的别名,更准确地说是moiré pattern。发生的事情是您打印的点与打印机点阵(屏幕)不完全对齐。
不同的打印机具有不同的屏幕,您的像素与它们对齐的方式不同。因此,有时您的点分布在2个打印机像素上,有时不会。如果你真的想这样做,那么如果你使用这种方法,每个设备都应该需要它自己的半色调模式。
进一步阅读:
答案 1 :(得分:0)
joojaa是对的,它是600到800 dpi之间的干涉模式。您需要找到更高分辨率的打印机或降低点阵图案的分辨率。尝试以5或10左右的步长减少图像阵列中的数字48 [48 0 0 -48 0 48]并再次打印,直到图案消失,这将是您的打印机可以做的最佳。