如何在不更改图像的情况下更新ALAsset的exif?

时间:2012-07-17 10:03:36

标签: ios metadata photo exif alasset

我使用setImageData:metadata:completionBlock: ALAsset来更新资产的exif(元数据)。

我只想更新元数据,但此方法需要imageData作为第一个参数。我使用下面的代码生成imageData,但它修改了我的图像(我检查了文件大小和文件哈希)。

ALAssetRepresentation *dr = asset.defaultRepresentation;
UIImage *image = [UIImage imageWithCGImage:dr.fullResolutionImage scale:dr.scale orientation:dr.orientation];
NSData *data = UIImageJPEGRepresentation(image, 1);

我是否可以使用任何其他方法来更新ALAsset的exif?或者为方法imageData生成正确setImageData:metadata:completionBlock:的任何方式?

1 个答案:

答案 0 :(得分:1)

我找到了生成imageData的方法。代码如下:

Byte *buffer = (Byte *)malloc(dr.size);
NSUInteger k = [dr getBytes:buffer fromOffset:0.0 length:dr.size error:nil];
NSData *data = [NSData dataWithBytesNoCopy:buffer length:k freeWhenDone:YES];

因此,我可以将上述数据与setImageData:metadata:completionBlock:一起使用,仅更新ALAsset的exif。