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

我使用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? 或者以任何方式为方法setImageData:metadata:completionBlock:生成正确的imageData setImageData:metadata:completionBlock: ?

我找到了一种生成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。