プログレッシブJPEGやCMYKモードのJPEGをUnix環境で判別(判定)
プログレッシブJPEGやCMYKモードのJPEGをUnix環境で判別(判定)する際によく使われるのが、imagemagicのidentifyですが、プログレッシブJPEGの判別(判定)はオプション「-verbose」を使用しないと取得できなく、この「-verbose」が様々な情報を取ってくるものだから、非常に遅いです。
困り果てていたときに、職場の先輩が良いものを発見してくれました。ホント謝謝。
発見したものは「rdjpgcom」です。
以下使用例です。
■【rdjpgcomとは】
Linux系のコアのライブラリ。
プログレッシブJPEG,CMYKモードのJPEGを判別できる。
■【rdjpgcomでプログレッシブJPEGを判別】
[shell gutter=”false” light=”true”]
$ rdjpgcom -verbose progressive.jpg
JPEG image is 800w * 1000h, 4 color components, 8 bits per sample
JPEG process: Progressive
$ rdjpgcom -verbose jpg.jpg
JPEG image is 240w * 320h, 3 color components, 8 bits per sample
JPEG process: Baseline
[/shell]
※JPEG process: ProgressiveならプログレッシブJPEG。
■【rdjpgcomでCMYKモードJPEGを判別】
上記で 4 colorならCMYK, 3 color ならJPEG、1 color ならグレースケール
ちなみにrdjpgcomはJPEG以外の画像は使えません。下記のように返戻されます。
[shell gutter=”false” light=”true”]
$ rdjpgcom png.png
Not a JPEG file
[/shell]
※参考URL
http://linux.about.com/library/cmd/blcmdl1_rdjpgcom.htm
http://terralib.dpi.inpe.br/lib/html/devel/html/dd/d5c/a02985.html ←ソース
以下は余談です。
■【imagemagicのidentifyでプログレッシブJPEGを判別(判定)】
[shell gutter=”false” light=”true”]
$ identify -verbose CMYK_progressive.jpg | grep -i interlace
Interlace: JPEG
$ identify -verbose jpg.jpg | grep -i interlace
Interlace: None
[/shell]
※Interlace: JPEG ←プログレッシブJPEG
Interlace: None ←プログレッシブJPEGではない
■【imagemagicのidentifyでCMYK(color model)を判別(判定)】
[shell gutter=”false” light=”true”]
$ identify -format ‘%[colorspace]’ CMYK_progressive.jpg
CMYK
$ identify -format ‘%[colorspace]’ gray-scale.jpg
Gray
$ identify -format ‘%[colorspace]’ jpg.jpg
RGB
[/shell]