画像のピクセルサイズを返すシェルコマンドはありますか?
convert
たとえば、さまざまなサイズのさまざまなgifを使用してアニメーションgifを作成したいとしますconvert -delay 50 1.gif 2.gif -loop 0 animated.gif
。
問題は、変換がアニメーションgifのサイズとして最初の画像のサイズを使用して画像を重ね合わせてサイズが異なるため、結果が少し汚れていて、古いフレームのビットが新しいフレームの下に表示されることです。 。
答え1
解決策が見つかりました:identify
imagemagickパッケージの一部、まさに私が必要としたものです。
$ 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