假设我有一个名为1.png
当前的图像
500px : height
1000px : width
我想将其调整为:
50px : height
100px : width
它必须以 PNG 格式输出,而不是 JPG。一个例子将受到高度赞赏。
答案1
我会使用convert
或mogrify
来自图像魔术师套房。
$ 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