4

我使用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);

有没有其他方法可以用来只更新 an 的 exif ALAsset?或者有什么方法可以生成正确imageData的方法setImageData:metadata:completionBlock:

4

1 回答 1

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.

于 2012-07-20T10:34:31.463 回答