Bash・コマンドラインで画像ファイルの情報を取得する (ImageMagick)
Bash 上で、画像ファイルの幅や高さの情報なんかを取得したいなと思った。ImageMagick が提供する identify
コマンドを使えば上手くいけた。
目次
検証したバージョン
- MacOS に HomeBrew でインストールした ImageMagick 7.1.0-8
$ brew install imagemagick
$ identify -version
Version: ImageMagick 7.1.0-8 Q16-HDRI x86_64 2021-09-18 https://imagemagick.org
Copyright: (C) 1999-2021 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules OpenMP(4.5)
Delegates (built-in): bzlib fontconfig freetype gslib heic jng jp2 jpeg lcms lqr ltdl lzma openexr png ps tiff webp xml zlib
Compiler: gcc (4.2)
- Windows WSL2 Ubuntu に apt でインストールした ImageMagick 6.9.10-23
$ apt install imagemagick -y
$ identify -version
Version: ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org
Copyright: © 1999-2019 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP
Delegates (built-in): bzlib djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png tiff webp wmf x xml zlib
メジャーバージョンが異なるが、出力される内容は一緒だった。
基本的な使い方
オプションなどナシで identify
コマンドを叩けば、とりあえず幅・高さなどは分かる。
$ identify example.png
example.png PNG 1832x688 1832x688+0+0 8-bit sRGB 192639B 0.000u 0:00.000
$ identify example.jpg
example.jpg JPEG 320x260 320x260+0+0 8-bit sRGB 15775B 0.000u 0:00.000
-verbose
を使うとこんな風に詳細が出る。
$ identify -verbose example.png
Image:
Filename: example.png
Format: PNG (Portable Network Graphics)
Mime type: image/png
Class: DirectClass
Geometry: 1832x688+0+0
Resolution: 144x144
Print size: 12.7222x4.77778
Units: PixelsPerInch
Colorspace: sRGB
Type: TrueColorAlpha
Base type: Undefined
Endianness: Undefined
Depth: 8-bit
Channel depth:
Red: 8-bit
Green: 8-bit
Blue: 8-bit
Alpha: 1-bit
Channel statistics:
Pixels: 1260416
Red:
min: 34 (0.133333)
max: 255 (1)
mean: 239.154 (0.93786)
median: 240 (0.941176)
standard deviation: 38.8098 (0.152195)
kurtosis: 16.6535
skewness: -4.00835
entropy: 0.256342
Green:
min: 34 (0.133333)
max: 255 (1)
mean: 240.001 (0.941182)
median: 240 (0.941176)
standard deviation: 38.5993 (0.15137)
kurtosis: 17.4013
skewness: -4.1278
entropy: 0.256674
Blue:
min: 34 (0.133333)
max: 255 (1)
mean: 238.892 (0.93683)
median: 240 (0.941176)
standard deviation: 40.574 (0.159114)
kurtosis: 14.9682
skewness: -3.87756
entropy: 0.257157
Alpha:
min: 255 (1)
max: 255 (1)
mean: 255 (1)
median: 255 (1)
standard deviation: 0 (0)
kurtosis: 8.192e+51
skewness: 1e+36
entropy: 0
Image statistics:
Overall:
min: 34 (0.133333)
max: 255 (1)
mean: 243.262 (0.953968)
median: 243.75 (0.955882)
standard deviation: 29.4958 (0.11567)
kurtosis: 22.8396
skewness: -4.67581
entropy: 0.192543
Rendering intent: Perceptual
Gamma: 0.454545
Chromaticity:
red primary: (0.64,0.33)
green primary: (0.3,0.6)
blue primary: (0.15,0.06)
white point: (0.3127,0.329)
Matte color: grey74
Background color: white
Border color: srgb(223,223,223)
Transparent color: none
Interlace: None
Intensity: Undefined
Compose: Over
Page geometry: 1832x688+0+0
Dispose: Undefined
Iterations: 0
Compression: Zip
Orientation: Undefined
Profiles:
Profile-exif: 144 bytes
Profile-icc: 4064 bytes
Profile-xmp: 449 bytes
Properties:
date:create: 2021-11-10T05:34:44+00:00
date:modify: 2021-10-27T07:34:31+00:00
exif:ExifOffset: 78
exif:PixelXDimension: 1832
exif:PixelYDimension: 688
exif:UserComment: 65, 83, 67, 73, 73, 0, 0, 0, 83, 99, 114, 101, 101, 110, 115, 104, 111, 116
icc:copyright: Copyright Apple Inc., 2021
icc:description: Display
png:iCCP: chunk was found
png:IHDR.bit-depth-orig: 8
png:IHDR.bit_depth: 8
png:IHDR.color-type-orig: 6
png:IHDR.color_type: 6 (RGBA)
png:IHDR.interlace_method: 0 (Not interlaced)
png:IHDR.width,height: 1832, 688
png:pHYs: x_res=5669, y_res=5669, units=1
signature: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xmp:PixelXDimension: 1832
xmp:PixelYDimension: 688
xmp:UserComment: Screenshot
Artifacts:
verbose: true
Tainted: False
Filesize: 192639B
Number pixels: 1.26042M
Pixels per second: 35.6634MP
User time: 0.060u
Elapsed time: 0:01.035
Version: ImageMagick 7.1.0-8 Q16-HDRI x86_64 2021-09-18 https://imagemagick.org
幅や高さだけを取得する
-format
オプションで幅・高さだけ取得、などができる。
$ identify -format '%wx%h' example.png
1832x688
$ identify -format '%w' example.png
1832
$ identify -format '%h' example.png
688
組み込みの file
コマンドでも分かる
ImageMagick をインストールしなくても、file
コマンドでも一応サイズなどの情報は調べられた。
形式の調整が難しいので、「幅だけ取得」とかは難しそう。目視確認で十分ならコレでも良いかも。
$ file example.png
example.png: PNG image data, 1832 x 688, 8-bit/color RGBA, non-interlaced
$ file example.gif
example.gif: GIF image data, version 89a, 400 x 400
$ file example.jpg
example.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), density 96x96, segment length 16, comment: "CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 90", baseline, precision 8, 64x64, components 3
以上
$ identify -format '%w %h'
で良さそうだ。
ImageMagick は identify
コマンドの他に、convert
という画像変換のコマンドも提供してくれる。コレもなかなか便利だ。
なお、Windows コマンドプロンプトだと、ファイルシステムを NTFS に変更するためのコマンドとして convert.exe
が標準搭載されているので、ImageMagick の convert
コマンドと名前がバッティングしてしまうことに留意。