Извлечение стиля изображения изображения из метаданных

Я использую ios CGImageSourceCopyPropertiesAtIndex для извлечения большого количества метаданных для изображений на ios. Но я не могу извлечь все метаданные, подобные показанным в приложении Mac Preview или команде exiftool.

Я пропускаю информацию "Стиль изображения" и "Canon" в основном.

Как я читаю метаданные:

NSURL *imageFileURL = [NSURL fileURLWithPath:filePath];
CGImageSourceRef imageSource = CGImageSourceCreateWithURL((CFURLRef)CFBridgingRetain(imageFileURL), NULL);
CFDictionaryRef props = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, NULL);
NSLog(@"%@", props);

У кого-нибудь есть подсказка?

Это информация с использованием предварительного просмотра

Это информация из NSLog:

2013-04-02 09:50:06.885 i2[67169:1f0f] {
ColorModel = RGB;
DPIHeight = 72;
DPIWidth = 72;
Depth = 8;
Orientation = 1;
PixelHeight = 1728;
PixelWidth = 2592;
"{Exif}" =     {
    ApertureValue = "5.375";
    BodySerialNumber = 1280809746;
    ColorSpace = 1;
    ComponentsConfiguration =         (
        1,
        2,
        3,
        0
    );
    CustomRendered = 0;
    DateTimeDigitized = "2012:12:24 12:58:46";
    DateTimeOriginal = "2012:12:24 12:58:46";
    ExifVersion =         (
        2,
        3
    );
    ExposureBiasValue = 0;
    ExposureMode = 1;
    ExposureProgram = 1;
    ExposureTime = "0.003125";
    FNumber = "6.3";
    Flash = 16;
    FlashPixVersion =         (
        1,
        0
    );
    FocalLength = 22;
    FocalPlaneResolutionUnit = 2;
    FocalPlaneXResolution = "2857.773";
    FocalPlaneYResolution = "2904.202";
    ISOSpeedRatings =         (
        3200
    );
    LensModel = "EF-S10-22mm f/3.5-4.5 USM";
    LensSpecification =         (
        10,
        22,
        0,
        0
    );
    MeteringMode = 5;
    PixelXDimension = 2592;
    PixelYDimension = 1728;
    SceneCaptureType = 0;
    ShutterSpeedValue = "8.375";
    SubsecTime = 35;
    SubsecTimeDigitized = 35;
    SubsecTimeOriginal = 35;
    WhiteBalance = 1;
};
"{IPTC}" =     {
    StarRating = 0;
};
"{TIFF}" =     {
    DateTime = "2012:12:24 12:58:46";
    Make = Canon;
    Model = "Canon EOS 7D";
    Orientation = 1;
    ResolutionUnit = 2;
    XResolution = 72;
    YResolution = 72;
    "_YCbCrPositioning" = 2;
};
}

1 ответ

Обратите внимание, что kCGImagePropertyMakerCanonDictionary, kCGImagePropertyExifAuxDictionary, а также kCGImagePropertyTIFFDictionary не варианты, которые CGImageSourceCopyPropertiesAtIndex понимает. Это ключи в словаре, который он возвращает. Это, кажется, не вызывает никаких проблем, чтобы пройти их, но это также ничего не достигает.

Там нет объявленного ключа свойства для доступа к данным стиля изображения, которые я вижу, но он, похоже, возвращается CGImageSourceCopyPropertiesAtIndex тем не мение. Если вы выбросите props словарь вы должны увидеть {PictureStyle} ключ, который содержит словарь с информацией, представляющей интерес. Вы также увидите {MakerCanon}ключ. Что соответствует константе kCGImagePropertyMakerCanonDictionaryи свойства в этом словаре описаны в соответствующем разделе документации.

Другие вопросы по тегам