如何从命令行调整 PNG 文件的大小?

7 image-manipulation

假设我有一个名为1.png当前的图像

500px : height
1000px : width
Run Code Online (Sandbox Code Playgroud)

我想将其调整为:

50px : height
100px : width
Run Code Online (Sandbox Code Playgroud)

它必须以 PNG 格式输出,而不是 JPG。一个例子将不胜感激。

cho*_*oba 15

我会使用convertmogrify来自ImageMagick套件。

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

# or #

$ mogrify -resize 100x50 1.png
Run Code Online (Sandbox Code Playgroud)

convert采用单独的输出文件名;创建一个单独的文件。
mogrify不采用单独的输出文件名;就地修改文件


ter*_*don 6

到目前为止,您得到的答案将适用于这种特殊情况,因为您的源图像和目标图像具有相同的宽高比。但是,如果您想更改为任意大小,它们将失败

$ 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
Run Code Online (Sandbox Code Playgroud)

正如您在上面所看到的,在不更改图像比例的情况下,简单的转换效果很好。但如果你想改变它们怎么办?

$ convert -resize 200x50 foo.png bar.png
$ file bar.png 
bar.png: PNG image data, 100 x 50, 8-bit colormap, non-interlaced
Run Code Online (Sandbox Code Playgroud)

因此,当更改比例时,上面的命令会失败。为了强制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
Run Code Online (Sandbox Code Playgroud)