2014-10-11 79 views
2

我想把一個PNG圖像放在postscript文件上,以便使用Ghostscript(v 9.15)ps2pdf轉換成pdf文件。我發現以下代碼可以很好地處理jpg文件,但我需要導入png文件。它看起來像我必須需要一個不同的過濾器,但我找不到一個工作。有沒有人有辦法解決嗎?如何使用Ghostscript在Postscript中導入png文件?

239      % number of pixels in the horizontal axis 
67      % number of pixels in the vertical axis 
8      % bits per color channel (1, 2, 4, or 8) 
[239 0 0 -67 0 67]  % transform array... maps unit square to pixel [ w 0 0 -h 0 h ] 
(My_Logo.jpg) (r) file % see page 587 and page 77 for more details 
/DCTDecode filter  % see page 589 
false     % pull channels from separate sources 
3      % 3 color channels (RGB) 
colorimage    % see page 544 and page 288 for more detail 

回答

4

PostScript不直接支持PNG,它支持JPEG,這就是爲什麼你的代碼在上面工作。

如果你想讀一個PNG圖像數據文件,你需要打開文件,剝去頭,然後讀取每個數據塊分別由它解析數據。將位圖數據寫入中間文件可能是最簡單的,但是完全可以編寫一個流解碼器來爲過程圖像數據源提供所需的數據。

幸運的PostScript不支持Flate,所以你不必寫的PostScript減壓代碼,你可以直接使用過濾器(肯定的,大多數版本的2級3級)。

你需要指定一個色彩空間,取決於PNG是否使用調色板與否。

PostScript是一種編程語言,所以這是可能的話,這將需要一個有經驗的程序員的PostScript幾天的編寫和調試它,我應該想到。

注意! PostScript不支持透明度,因此您不能從PNG文件應用Alpha通道。

+0

無賴。所以下一個最好的解決方案是將png文件轉換爲jpg文件,然後像上面那樣導入它,對吧? – Mike 2014-10-11 16:49:01

+1

JPEG是一種有損壓縮方法,您可能最好將其導出爲原始位圖或其他適當簡單並使用該方法的東西。 – KenS 2014-10-11 20:49:26

+0

PPM是一個有據可查的「原始」格式,可以工作。但它可以製作大文件,因爲根本沒有壓縮。而你仍然需要去掉標題。 – 2014-10-12 21:50:40