コマンドラインでPNGファイルのサイズを変更するには?

コマンドラインでPNGファイルのサイズを変更するには?

1.pngcurrentというイメージがあるとしましょう。

500px : height
1000px : width

次のように調整したいと思います。

50px : height
100px : width

JPGではなくPNG形式で出力する必要があります。たとえば、ありがとうございます。

答え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を追加する必要があります(そしてこれは多くの!シェルの特殊文字なので、エスケープする必要があります\!)。

$ 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

関連情報