2010-06-02 95 views
6

我有一張1000x1000 300dpi的圖像,需要將其轉換爲100x100 96dpi的縮略圖。我如何在ImageMagick中做到這一點?我以儘可能最高的質量儘可能縮小文件大小。ImageMagick幫助 - 需要更改DPI

做這樣的事情:

convert myimage.png -quality 100 -resize 100 PNG8:mynewimage.png 

....沒有改變尺寸,但仍保持着DPI。如果我可以得到這個更改爲96dpi,我應該得到一個較小的文件大小。

我試過-density等,但似乎無法讓他們爲我工作。也許我會按錯誤的順序放置命令或傳遞錯誤的參數。任何援助非常感謝。謝謝。

+0

未測試:convert myimage.png -units PixelsPerInch -density 96x96 -quality 100 -resize 100 PNG8:mynewimage.png – StackOverflowNewbie 2010-10-03 13:14:58

回答

5

簡短的說法是,如果你想要一個PNG格式的100x100圖像,你所擁有的行將已經在最小的文件大小下給你最好的質量。如果沒有a)編碼爲有損格式(JPEG)或b)減少圖像的顏色深度,則無法做得更好。

對於一個稍長的解釋,直接從維基百科:「每英寸點數(DPI)是衡量空間打印或視頻點密度,特別是單個點的數量,可以放置在一行1英寸(2.54釐米)DPI值傾向於與圖像分辨率相關,但僅與間接相關。「

DPI與獲取較小的文件大小無關;無論您是在300dpi屏幕上還是在96dpi屏幕上(在300dpi屏幕上它看起來會更小),您的100x100圖像都會測量100x100 像素。信息量是相同的。

「-density」也不起作用,因爲它只適用於「在將諸如Postscript,PDF,WMF和SVG等矢量格式渲染(讀取)爲柵格圖像時編碼柵格圖像」。這些格式是分辨率無關的,所以告訴ImageMagick您想要圖像光柵化的DPI是有意義的。但是,您的DPI應該是您計劃使用的輸出設備的功能。在你的情況下,由於你從一個已經柵格化的圖像開始,這沒有用。

PNG是一種無損格式,因此-quality參數僅控制zlib壓縮級別;圖像尺寸的任何增益都會很小,但值得使用。

+0

實際上,'-density'選項對支持它的觀看者確實有所幫助。也許這個問題已經改變了,但根據[文檔](http://www.imagemagick.org/script/command-line-options.php#density):「-density'選項設置一個*屬性*並且不會更改底層的柵格圖像。「如果您在查看器/工具(如Corel Draw)中打開圖像,則在確定如何顯示相對於當前畫布「DPI」的圖像時,將考慮此屬性。 – 2013-04-29 18:19:40