2013-03-18 5 views
2

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

Мне больше не хватает информации «Стиль изображения» и «Канон».

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

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

Кто-нибудь есть намек?

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

enter image description here

Это информация от 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; 
}; 
} 
+0

Не уверен, что вы используете эти данные, но изображение никогда не будет содержать никаких метаданных или exif-данных, не говоря уже о том, что это не стандарт, поэтому каждое изображение может быть другим. – Tim

+0

Я пытаюсь извлечь информацию о снимках, сделанных внешними камерами. При этом в программах для настольных компьютеров доступна дополнительная информация, чем при использовании CGImageSourceRef. Поэтому было интересно узнать, можно ли получить больше информации с использованием существующих библиотек. – stoffer

ответ

1

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

Нет ключа объявленного свойства, чтобы получить доступ к данным стиля изображения, которые я могу видеть, но в любом случае он возвращается CGImageSourceCopyPropertiesAtIndex. Если вы выгрузите словарь props, вы должны увидеть ключ {PictureStyle}, содержащий словарь с интересующей информацией. Вы также увидите ключ {MakerCanon}. Это соответствует константе kCGImagePropertyMakerCanonDictionary, а свойства в этом словаре - это те, которые описаны в relevant section of the documentation.

+0

Да - это фрагмент кода из какого-то старого тестового кода. Выяснили, как использовать CGImageSourceCopyPropertiesAtIndex. Моя проблема заключается в том, что при использовании этой функции no {MakerCanon} или {PictureStyle} находится в реквизитах, но при использовании MacOS Preview есть такая информация о картинке. Обновили сообщение с соответствующими скриншотами и реквизитами dump – stoffer

+0

Какую версию ОС вы тестируете? Я протестировал на OS X 10.8.x и смог получить стиль изображения и данные, относящиеся к конкретным производителям, из необработанных дисков, захваченных камерами Canon и Olympus. Я ожидаю, что он будет работать таким же образом на iOS 6.x, как и на OS X 10.8.x. – bdash

+0

Я тестирую OS X 10.8.3 и iOS 6.1.3. Прекрасно работает на OS X, а не в iOS – stoffer

Смежные вопросы