2015-09-29 77 views
3

我正在使用PostScript語言描述統一排列的點的頁面。這些點是600dpi,這意味着每英寸有600個點。我使用一位來表示PostScript中的每個點,空白爲1,黑點爲0。點的單元的打印PostScript文件時出現紋理條紋

我的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

我唯一的猜測是你正在與內置的半色調機器作鬥爭。後記主要是爲了從實際的點中抽象出來。我不知道如何解決這個問題。 –

回答

3

你看到的是你的信號的別名,moiré pattern更準確。正在發生的事情是您打印的點不完全符合打印機點陣(屏幕)。

不同的打印機具有不同的屏幕,並且您的像素以不同方式與它們對齊。因此,有時您的點會分散在2個打印機像素上,有時不會。如果你真的想這樣做,那麼如果你使用這種方法,每個設備都需要它自己的半色調圖案。

進一步閱讀:

0

joojaa是正確的,它是600和800 DPI之間的干涉圖案。您需要找到更高分辨率的打印機或降低點圖案的分辨率。嘗試以5或10左右的步幅減少圖像數組[48 0 0 -48 0 48]中的數字48,然後再次打印,直到圖案消失,這將是您的打印機能夠做到的最佳選擇。