プログレッシブ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]