コマンドラインからImageMagickを使用して画像のサイズを変更しています。
convert -size 320x240 image.jpg
しかし、最終的な画像のサイズを決定する方法がわかりません。これは比例した画像スケールであるため、新しい画像のサイズが100x240または320x90(320x240ではない)である可能性が非常に高くなります。
'convert'コマンドを呼び出して画像のサイズを変更し、新しい画像のサイズを返すことはできますか?たとえば、疑似コード:
convert -size 320x240 -return_new_image_dimension image.jpg // returns the new resized image dimensions
identify
への追加の呼び出しを使用できます。
変換-サイズ320x240image.jpg;識別形式 "%[fx:w] x%[fx:h]" image.jpg
-ping
オプション
次のように、画像全体がメモリに読み込まれないようにするため、このオプションもお勧めします。 https://stackoverflow.com/a/22393926/895245 :
identify -ping -format '%w %h' image.jpg
ImageMagick 6.7.7、Ubuntu14.04でテスト済み。
%w
と%h
の形式がわかりません。 Photoshopは私の写真が2678x3318であると言っていますが(そして私は本当にPhotoshopを信頼しています)、identify
は私に次のことを与えます:
identify -ping -format '=> %w %h' image.jpg
=> 643x796
([fx:w]と[fx:h]もそうです)
私は使用しなければなりませんでした
identify -ping -format '=> %[width] %[height]' image.jpg
=> 2678x3318
ここで何が起こっているのかわかりませんが、標準出力で両方の値を確認できます(ここで、幅と高さbefore=>は正しいですもの)
identify -ping image.jpg
image.jpg PAM 2678x3318=>643x796 643x796+0+0 16-bit ColorSeparation CMYK 2.047MB 0.000u 0:00.000
ドキュメント %wはcurrent幅であり、%[width]はオリジナルであると述べています幅。紛らわしい。
%w
および%h
は、ほとんどの用途で正しい場合がありますが、すべての画像で正しいとは限りません。
オプション-verbose
を指定すると、プリントを変換します。
original.jpg=>scaled.jpg JPEG 800x600=>100x75 100x75+0+0 8-bit sRGB 4.12KB 0.020u 0:00.009
^^^^^^