Использование CGImageProperties для получения свойств EXIF

Я хочу иметь возможность добавлять текстовый комментарий к метаданным JPEG и иметь возможность читать его из приложения для iphone.

Я думал, что это будет довольно просто, поскольку ios4 поддерживает информацию EXIF. Поэтому я добавил метаданные с помощью инструмента Windows под названием «используемый AnalogExif» и прочитал их обратно из своего приложения, используя:

NSData *jpeg = UIImageJPEGRepresentation(myUIImage,1.0);

CGImageSourceRef  source = CGImageSourceCreateWithData((CFDataRef)jpeg, NULL);
NSDictionary *metadata = (NSDictionary *) CGImageSourceCopyPropertiesAtIndex(source,0,NULL);

NSMutableDictionary *metadataAsMutable = [[metadata mutableCopy]autorelease];
[metadata release];

NSMutableDictionary *EXIFDictionary = [[[metadataAsMutable objectForKey:(NSString *)kCGImagePropertyExifDictionary]

И это работает... до определенного момента :)

То, что я получаю в словаре метаданных, выглядит примерно так:

(gdb) po metadata
{
   ColorModel = RGB;
   Depth = 8;
   Orientation = 1;
   PixelHeight = 390;
   PixelWidth = 380;
   "{Exif}" =     {
      ColorSpace = 1;
      PixelXDimension = 380;
      PixelYDimension = 390;
   };
   "{JFIF}" =     {
      DensityUnit = 0;
      JFIFVersion = (
        1,
        1
      );
      XDensity = 1;
      YDensity = 1;
   };
   "{TIFF}" =     {
      Orientation = 1;
   };
}

Но это все, что я могу получить! Я отредактировал файл JPEG во всех редакторах EXIF, которые смог найти (в основном, в редакторах ПК), и хотя все они говорят, что я добавил комментарии JPEG, подписи EXIF ​​и ключевые слова, похоже, что ни одна из этих сведений не доступна в Apple SDK. в моем приложении.

Кому-нибудь удалось установить текстовое поле в метаданных jpeg и прочитать его из приложения для iphone?

Я не хотел использовать стороннюю библиотеку, если это вообще возможно

Спасибо заранее


person user930731    schedule 28.09.2011    source источник


Ответы (1)


Вы правы, думая, что iOS поддерживает больше метаданных, чем вы видите. Вероятно, вы потеряли данные, когда создали UIImage, а затем преобразовали его обратно в JPEG. Попробуйте NSData *jpeg = [NSData dataWithContentsOfFile:@"foo.jpg"] и вы должны увидеть EXIF.

person Icydog    schedule 30.09.2011