使用CGImageProperties获取EXIF属性

5

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

我认为这应该很简单,因为ios4支持EXIF信息。因此,我使用一个名为AnalogExif的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编辑器(主要是PC上的),虽然它们都说我已经添加了JPEG注释和EXIF标题和关键字,但在我的应用程序中似乎没有任何信息可用于苹果SDK。
有人成功将文本字段设置为JPEG元数据并设法从iPhone应用程序中读取吗?
如果可能的话,我不想使用第三方库。
非常感谢您的帮助。
1个回答

4

你的想法是正确的,iOS支持比你看到的更多的元数据。当你创建一个UIImage然后将其转换回JPEG时,你可能会丢失数据。尝试使用NSData *jpeg = [NSData dataWithContentsOfFile:@"foo.jpg"],你应该能看到EXIF。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接