at_yasu's blog

ロード的なことを

画像の付属情報メモ

Cocoa と言うよりCoreGraphicでいろいろな画像の(メタ|付属)情報を見た際の、それぞれの付属情報

メタ情報の取得方法はこんな感じ。

    // CF で画像を取得し、付属情報を得る
    NSURL *url = [NSURL fileURLWithPath:_myCurrentPath];
    CGImageSourceRef isr = CGImageSourceCreateWithURL((CFURLRef)url, NULL);
    if (isr) {
        // 画像の取得時のオプション。
        NSDictionary *opt = [NSDictionary dictionaryWithObjectsAndKeys:
            (id)kCFBooleanTrue, (id)kCGImageSourceShouldCache,
            (id)kCFBooleanTrue, (id)kCGImageSourceShouldAllowFloat,
            NULL];

        // 画像を取得
        _cgImageRef = CGImageSourceCreateImageAtIndex(isr, 0, (CFDictionaryRef)opt);

        // 画像のメタ情報の取得
        _imageMeta = (NSDictionary*)CGImageSourceCopyPropertiesAtIndex(isr,0,(CFDictionaryRef)opt);

        // メタ情報の出力
        NSLog(@"imageMeta: %@",_imageMeta);
        CFRelease(isr);
    }


以下一覧。

拡張子 Key value 簡単な説明
bmp -- -- 付加情報が立て横幅、色の種類(RGB/gray scale)や1dotのビット幅ぐらい。基本的な情報のみ。
psd {8BIM} レイヤー名が入ったNSDictionary型。KeyはLayerNames それぞれのレイヤーにある画像の取得方法は不明
tiff {TIFF} 画像の圧縮率等を書いたNSDictionary型。 詳しくはよく知らない。
png {PNG} NSDictionary型。何の情報かは不明。 DPIの値が小数点になっている。理由は不明。
jpg {Exif} NSDictionary型。Exifの情報だと思われる。 jpgだけいろいろなタイプが入っている。このjpgは、JPEG2000ではない。
{JFIF} NSDictionary型。何の情報かは不明。
{TIFF} NSDictionary型。作成日や作成したソフト名などが入っている。
jp2 -- -- jpeg2000という規格。なぜかメタ情報はない。
GIF {GIF} NSDictionary型。モーションGIFのみ。 GIF。モーションGIFだと駒送りの間隔の秒数があるが、ただの一枚絵だと、メタ情報は無い。
pict -- -- PICT形式。メタ情報無し

まだあるけど以上。
pdf,epsなどの情報からはさすがに読み込めない。

修正:Keyの部分、{}で囲ってやる必要がある。
追加:15時12分、jp2,gif,pictを追加。メタ情報で判別するのもいい方法と思ったアタシが馬鹿でした。別の方法を模索します。つか、ファイルのMIMEタイプとか拾えないのかね・・・