如何從命令列調整 PNG 檔案的大小?

如何從命令列調整 PNG 檔案的大小?

假設我有一個名為1.png當前的圖像

500px : height
1000px : width

我想將其調整為:

50px : height
100px : width

它必須以 PNG 格式輸出,而不是 JPG。一個例子將受到高度讚賞。

答案1

我會使用convertmogrify來自圖像魔術師套房。

$ convert -resize 100x50 1.png 2.png

# or #

$ mogrify -resize 100x50 1.png

convert採用單獨的輸出檔名;建立一個單獨的文件。
mogrify不採用單獨的輸出檔名;就地修改文件

答案2

到目前為止,您得到的答案將適用於這種特殊情況,因為您的來源影像和目標影像具有相同的寬高比。但是,如果您想更改為任意大小,他們會失敗:

$ file foo.png 
foo.png: PNG image data, 1000 x 500, 8-bit/color RGB, non-interlaced
$ convert -resize 100x50 foo.png bar.png
$ file bar.png 
bar.png: PNG image data, 100 x 50, 8-bit colormap, non-interlaced

正如您在上面所看到的,在不更改圖像比例的情況下,簡單的轉換效果很好。但如果你想改變它們怎麼辦?

$ convert -resize 200x50 foo.png bar.png
$ file bar.png 
bar.png: PNG image data, 100 x 50, 8-bit colormap, non-interlaced

因此,當更改比例時,上面的命令會失敗。為了強制convert以這種方式更改圖像,您需要將 a 添加!到幾何規範的末尾(並且,由於 是!許多 shell 的特殊字符,因此您需要將其轉義為\!):

$ convert -resize 200x50\! foo.png bar.png
$ file bar.png 
bar.png: PNG image data, 200 x 50, 8-bit colormap, non-interlaced

答案3

為此,請使用 Imagemagick。

閱讀手冊頁以了解正確使用方法,但它應該透過傳遞參數來工作,例如

convert 1.png -resize 50x100 1-resized.png

答案4

ImageMagick 的替代品是古老的 netpbm:

pngtopnm input.png | pnmscale -reduce 10 | pnmtopng > output.png

相關內容