如何在 iOS 上为 kCGImagePropertyRawDictionary 设置元数据?
Posted
技术标签:
【中文标题】如何在 iOS 上为 kCGImagePropertyRawDictionary 设置元数据?【英文标题】:How to set metadata for kCGImagePropertyRawDictionary on iOS? 【发布时间】:2017-04-07 19:22:41 【问题描述】:您好,我正在尝试在图像中设置自定义信息。这里的文档:https://developer.apple.com/reference/imageio/kcgimagepropertyrawdictionary 说这是一个用于最小数据的字典。
据我了解,我可以在图像中存储一些字符串或 NSData。
ios 不允许设置未在 CGImageProperties 中列出的元数据。我在 kCGImagePropertyRawDictionary 下找不到任何可能的键。我也尝试直接将其设置为字符串。所有这些都失败了。
有人知道如何设置 kCGImagePropertyRawDictionary 的值吗?
【问题讨论】:
【参考方案1】:据我了解,我可以在图像中存储一些字符串或 NSData。
是的,图像元数据的目的是存储图像元数据。这可以包括数字、布尔值和——最常见的——字符串。但是,元数据系统并不是为任意元数据设计的——每个值都有特定的用途。为了强制执行此目的,CGImageDestinationAddImage
会静默删除它认为无效的任何值。在传递给该函数的properties
字典中允许使用一组固定的键,它是destination properties 和CGImageProperties 的联合。
您已经正确地注意到kCGImagePropertyRawDictionary
就是这样一个允许的密钥。但是,它的值本身必须是一个字典,并且文档没有指定在那里可以接受哪些键——如果是这样,那将在 CGImageProperties 页面上列为“RAW Dictionary Keys”。因此,该字典没有允许的键。如果您想存储不属于 CGImageProperties 中描述的(许多)类别之一的图像数据,则必须将其存储在其他位置。
只是为了好玩,因为我很好奇,我在ImageIO
框架上运行了strings
,并找到了一个包含约300 个字符串常量的列表,这些常量看起来像是这个字典的可能键。我写了一个quick test program 来尝试将这些键中的每一个放入kCGImagePropertyRawDictionary
键的字典中。没有一个人通过。这让我觉得kCGImagePropertyRawDictionary
只是为了将来使用,目前不接受任何元数据。
【讨论】:
感谢您的回复。苹果似乎应该删除这个密钥。以上是关于如何在 iOS 上为 kCGImagePropertyRawDictionary 设置元数据?的主要内容,如果未能解决你的问题,请参考以下文章