【发布时间】:2016-12-02 11:44:37
【问题描述】:
由于保存PHAsset时使用的调整数据可以完全由用户定义,是否有任何内存大小限制?
例如,我可以在其中存储蒙版或图层(基本上是多个位图)之类的东西吗?
【问题讨论】:
标签: ios photosframework
由于保存PHAsset时使用的调整数据可以完全由用户定义,是否有任何内存大小限制?
例如,我可以在其中存储蒙版或图层(基本上是多个位图)之类的东西吗?
【问题讨论】:
标签: ios photosframework
documentation for PHAdjustmentData.init 注释(重点是我的):
由于“照片”会限制调整数据的大小,因此您应该保持编辑信息简短且具有描述性。 不要使用图像数据来描述编辑,而是只保存重新创建编辑所需的最少信息。
您的应用必须为 data 参数提供一个非空的 NSData 对象。如果您无法提供相关数据来描述编辑,您可以传递对 NSUUID 对象进行编码的数据。
换句话说,调整数据不适用于根据实际新像素对编辑进行编码的 Photoshop 样式文件。请记住,调整数据的主要思想是您可以使用它来恢复、重建和更改在上次用户编辑中执行的任何工作。
调整数据最常用于表示“模糊滤镜@20px + 变暗 20% + 裁剪为 (100,100,300,400)”之类的内容。对于更复杂的编辑,您必须更有创意——例如,对于用户使用画笔绘制的效果,您可能可以用更少的数据记录画笔描边(加上画笔半径和任何其他参数)比你用来存储位图的。
如果失败了,如果您的编辑只能使用太大而无法放入调整数据中的数据来描述,请注意 Apple 留下的关于使用 UUID 的提示 - 您可以将数据存储在照片外部,并使用调整数据存储一个密钥,让您在外部存储中查找编辑。 (当然,你必须确保你的外部存储在 iCloud 照片库同步到的所有地方,并且如果你不能访问它,有办法优雅地回退,等等......)
哦,至于上限是多少……Apple 可能不会公布上限,因为它可能会因设备、iCloud 帐户状态、操作系统版本或其他一些因素而发生变化。因此,即使您通过实验找到了一个限制,它也可能并不总是成立。
【讨论】:
我做了一些测试,似乎 2 MB 就是答案。不过最好有官方声明……
【讨论】: