【问题标题】:How to update exif of ALAsset without changing the image?如何在不更改图像的情况下更新 ALAsset 的 exif?
【发布时间】:2012-07-17 10:03:36
【问题描述】:

我使用ALAsset 中的setImageData:metadata:completionBlock: 来更新资产的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

【问题讨论】:

    标签: ios metadata photo exif alasset


    【解决方案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。

    【讨论】:

    • 有人能解释一下这是做什么的吗?这怎么不更新图像?
    • @akaru,上面的代码在变成CGImage之前获取了原始图像数据。通过setImageData:...写入时,图片未修改。
    猜你喜欢
    • 2016-06-09
    • 1970-01-01
    • 2014-10-15
    • 2023-02-21
    • 1970-01-01
    • 2022-10-13
    • 2010-09-17
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多