使用CGImageProperties获取EXIF属性

时间:2011-09-28 23:12:29

标签: xcode uiimage exif iptc cgimagesource

我希望能够在JPEG的元数据中添加文本注释,并能够在iphone应用程序中读取它。

我认为这很简单,因为ios4包含对EXIF信息的支持。所以我使用名为usedExter的Windows工具添加元数据,并使用以下方法从我的应用程序中读取:

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;
   };
}

但这就是我能得到的!我用我能找到的每个EXIF编辑器编辑了JPEG文件(我应该说是主要的PC编辑器),尽管他们都说我添加了JPEG注释和EXIF字幕和关键字,但Apple SDK中似乎没有提供任何信息。在我的应用程序中。

有没有人设法在jpeg的元数据中设置文本字段并设法从iphone应用程序中读取它?

如果可能的话,我不想使用第三方库

非常感谢提前

1 个答案:

答案 0 :(得分:4)

您认为iOS确实支持的元数据比您所看到的更多,这是正确的。您可能在创建UIImage时丢失了数据,然后将其转换回JPEG。试试NSData *jpeg = [NSData dataWithContentsOfFile:@"foo.jpg"],你会看到EXIF。