2015-10-05 31 views
1

我通讀了使用說明文檔,找不到任何方式輸出寬度爲X像素的圖像,高度由寬高比決定。我有大量需要柵格化的EPS文件,它們至少需要2400像素寬。我目前的解決方法是使用-r標誌來設置通常足夠高的分辨率,但這會使許多圖像變得非常大,比我需要的要大得多。Ghostscript:在保持寬高比的同時設置像素寬度,將EPS設置爲PNG

我目前使用這個命令:

gs -dNOPAUSE -sDEVICE=pngalpha -dEPSCrop -sOutputFile=./result.png -r500x500 -dEPSFITPAGE -dBATCH -dQUIET ./input.eps 

我已經嘗試了不同的組合和-g-dDEVICEWIDTH-dDEVICEHEIGHT-dFIXEDMEDIA-dFIXEDRESOLUTION-dFitPage,但我無法弄清楚設置。

我有一種感覺,可能需要一些種類的數學來簡單地設置-r的正確值,這將產生所需的尺寸,但我不知道如何去做這件事。任何幫助感謝!

回答

1

您不能指定(從命令行)任何將修改一個維度並使其他維度重新縮放的任何內容。

您可以通過在PostScript中編程來實現此目的。媒體大小請求由setpagdevice處理,您可以重新定義setpagedevice,以便預處理媒體大小請求或創建修改媒體大小的BeginPage過程。

重新定義setpagedevice可能是最簡單的。編寫一個例程,檢查所請求的寬度和高度以及HWResolution的當前值。將其與已知的目標值進行比較(如果需要,可以使用-d =將其存儲在PostScript字典中)計算所需的比例因子並將其應用於請求的寬度和高度,然後適當更改所請求的值並將它們傳遞給原始setpagedevice定義。

這也排除了任何要求設置DEVICEWIDTHPOINTS,DEVICEHEIGHTPOINTS或FIXEDMEDIA。

+0

我試圖尋找到的PostScript,但是我找不到包含的相關信息,除[這個可怕的PDF簡潔導遊或教程參考指南](https://www.adobe.com/products/postscript/pdfs/PLRM.pdf)。我也發現[這個答案](http://stackoverflow.com/a/10024458/441212),但我不知道代碼中究竟發生了什麼,什麼是最好的資源可以用來學習如何做你剛剛描述的事情? – Julien

+0

這是我的答案,你不想那樣。 PostScript是一種編程語言,如果你想對它做任何有建設性的事情,恐怕你至少要學習一些語言。 PLRM可能看起來很大,但對於一個完整的語言來說它非常緊湊,而且寫得很好。您可以搜索其他涉及BeginPage的答案,我相當肯定您會從我這裏找到一些,可能還有其他的。我會推薦John Deubert的Acumen Training(http://www.acumentraining.com/acumenjournal.html)網站來獲取PostScript指南。 2001年7月有關於使用BeginPage和EndpPage的文章 – KenS

+0

謝謝Ken。我會研究你的建議資源。 – Julien

相關問題