webdevqa.jp.net

ImageMagickは画像サイズを返すことができますか?

コマンドラインから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
34
JacobT

identifyへの追加の呼び出しを使用できます。

変換-サイズ320x240image.jpg;識別形式 "%[fx:w] x%[fx:h]" image.jpg
43
Arjan

-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は、ほとんどの用途で正しい場合がありますが、すべての画像で正しいとは限りません。

3
emale

オプション-verboseを指定すると、プリントを変換します。

original.jpg=>scaled.jpg JPEG 800x600=>100x75 100x75+0+0 8-bit sRGB 4.12KB 0.020u 0:00.009
                                       ^^^^^^
0
kirikaza