如何在 iOS 上为 kCGImagePropertyRawDictionary 设置元数据?



嗨,我正在尝试在图像中设置自定义信息。这里的文档:https://developer.apple.com/reference/imageio/kcgimagepropertyrawdictionary 说这是一个最小数据的字典。

我从中了解到,我可以在图像中存储一些字符串或 NSData。

iOS 不允许设置未在 CGImageProperties 中列出的元数据。我在kCGImagePropertyRawDictionary下找不到任何可能的键。我还尝试直接将其设置为字符串。所有这些都失败了。

有谁知道如何设置kCGImagePropertyRawDictionary的值?

我从中了解到,我可以在图像中存储一些字符串或 NSData。

是的,图像元数据的目的是存储图像元数据。这可能包括数字、布尔值和最常见的字符串。但是,元数据系统不是为任意元数据设计的——每个值都有特定的用途。为了强制实现此目的,CGImageDestinationAddImage静默地删除它认为无效的任何值。在传递给该函数的properties字典中允许一组固定的键,这是目标属性和 CGImageProperties 的联合。

您已经正确注意到kCGImagePropertyRawDictionary就是这样一个允许的密钥。但是,它的值本身必须是一个字典,并且文档没有指定哪些键是可以接受的 - 如果是,它将在CGImageProperties页面上列为"RAW字典键"。因此,该字典没有允许的键。如果要存储不属于CGImageProperties中描述的(许多)类别之一的图像的数据,则必须将其存储在其他位置。


只是为了好玩,因为我很好奇,我在ImageIO框架上运行了strings,并找到了一个~300个字符串常量的列表,这些常量看起来像这个字典的可能键。我编写了一个快速测试程序,尝试将这些键中的每一个放入kCGImagePropertyRawDictionary键的字典中。没有一个人通过。这让我认为kCGImagePropertyRawDictionary只是为了将来使用,目前不会接受任何元数据。

最新更新