如何从命令行调整 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

相关内容