画像のピクセルサイズを取得するシェルコマンド

画像のピクセルサイズを取得するシェルコマンド

画像のピクセルサイズを返すシェルコマンドはありますか?

convertたとえば、さまざまなサイズのさまざまなgifを使用してアニメーションgifを作成したいとしますconvert -delay 50 1.gif 2.gif -loop 0 animated.gif

問題は、変換がアニメーションgifのサイズとして最初の画像のサイズを使用して画像を重ね合わせてサイズが異なるため、結果が少し汚れていて、古いフレームのビットが新しいフレームの下に表示されることです。 。

答え1

解決策が見つかりました:identifyimagemagickパッケージの一部、まさに私が必要としたものです。

$ identify color.jpg 
> color.jpg JPEG 1980x650 1980x650+0+0 8-bit DirectClass 231KB 0.000u 0:00.000

答え2

identifyこのオプションを使用すると、目やテキストユーティリティで出力を解析するのではなく、自分に最適な形式で幅と高さを出力できます。-formatたとえば、

$ identify -format '%w %h' img.png
100 200
$ identify -format '%wx%h' img.png
100x200

エクスポートできる画像プロパティの一覧は、次のとおりです。このページ、しかしここで質問の場合必要なのは、%wおよび%hそれぞれイメージの幅と高さをピクセル単位で提供するようです。


多数の画像を出力し、出力を整列させることによって提供される柔軟性は、-formatピクセル単位で最大の画像を見つけるのに非常に有用であった。%[fx:w*h]

-pingより複雑なエスケープを使用して多くの画像を操作し、プログラムが画像全体を読み込むのに時間を無駄にしないようにしたい場合は、このオプションを指定できます。単純なエスケープの場合、-pingこれはデフォルト値でなければなりません。-pingとの間の選択の詳細を+ping見つけることができます。ここ

答え3

「file」コマンドを使用して必要な情報を取得できます。

~# file cha_2.png 
cha_2.png: PNG image data, 656 x 464, 8-bit/color RGB, non-interlaced

答え4

寸法を表示するにはidentify:

$ identify color.jpg 
> color.jpg JPEG 1980x650 1980x650+0+0 8-bit DirectClass 231KB 0.000u 0:00.000

cut | sedフィールド3から値を抽出します。

identify ./color.jpg | cut -f 3 -d " " | sed s/x.*// #width
identify ./color.jpg | cut -f 3 -d " " | sed s/.*x// #height

変数に割り当て:

W=`identify ./color.jpg | cut -f 3 -d " " | sed s/x.*//` #width
H=`identify ./color.jpg | cut -f 3 -d " " | sed s/.*x//` #height
echo $W
> 1980
echo $H
> 650

関連情報