我使用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:
的任何方式?
答案 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。