gpt4 book ai didi

objective-c - 将 IPTC 数据写入文件

转载 作者:搜寻专家 更新时间:2023-10-30 19:57:41 26 4
gpt4 key购买 nike

我需要获取一个现有的 jpg 文件并修改其 IPTC 条目中的标题、描述和关键字。这里有几个主题,但都没有答案或部分答案。我已经知道如何阅读 IPTC 信息,但需要编辑它们。有人可以阐明这个研究较多但鲜为人知的话题吗?

我有的是:

NSString: title
NSString: description
NSArray: keywords
NSString: path to the file

我想使用现有 IPTC 数据拍摄现有图像并用这些数据替换现有条目,但保留所有其他 IPTC 条目,例如位置、日期等。到目前为止我所知道的是我需要使用 CGImageDestination。

谢谢

最佳答案

您应该首先从文件中读取元数据:

CGImageSourceRef source = CGImageSourceCreateWithURL((__bridge CFURLRef)url, NULL);
NSDictionary *props = (__bridge_transfer NSDictionary *) CGImageSourceCopyPropertiesAtIndex(source, 0, NULL);

在上面的代码中,url 是您的图像文件的 URL。 props 将在目标 URL 中包含图像的所有元数据。

然后,将该数据复制到一个新的可变空数据源:

//new empty data to write the final image data to
NSMutableData *resultData = [NSMutableData data];
CGImageDestinationRef imgDest = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)(resultData), imageType, 1, NULL);

最后,假设您已经修改了新 NSDictionary 实例中的元数据(在此示例中称为 modifiedMetadata):

//copy image data
CGImageDestinationAddImageFromSource(imgDest, source, 0, (__bridge CFDictionaryRef)(modifiedMetadata));
BOOL success = CGImageDestinationFinalize(imgDest);

这会将元数据写入目标图像。至少就我而言,它工作得很好。

要将图像数据保存到实际文件中,可以定期写入数据,例如:

[resultData writeToFile:fileName atomically:YES];

关于objective-c - 将 IPTC 数据写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23874865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com