PHAdjustmentData 大小限制

PHAdjustmentData size limitation

由于保存PHAsset时使用的调整数据完全可以自定义,是否有内存大小限制?

例如,我可以在其中存储诸如蒙版或图层(基本上是多个位图)之类的东西吗?

我做了一些测试,似乎 2 MB 就是答案。有官方声明就好了,不过...

documentation for PHAdjustmentData.init 注释(强调我的):

Because Photos limits the size of adjustment data, you should keep your edit information short and descriptive. Don’t use image data to describe an edit—instead, save only the minimal information that is needed to recreate the edit.

Your app must provide a non-empty NSData object for the data parameter. If you cannot provide relevant data to describe an edit, you may pass data that encodes an NSUUID object.

换句话说,调整数据不适用于根据实际新像素对编辑进行编码的 Photoshop 样式文件。请记住,调整数据的主要思想是您可以使用它来恢复、重建和更改上次用户编辑中执行的任何工作。

调整数据最常用于表示“模糊滤镜 @ 20px + 变暗 20% + 裁剪至 (100,100,300,400)”。对于更复杂的编辑,您必须更有创意——例如,对于用户使用画笔绘制的效果,您可能可以用更少的数据记录画笔笔触(加上画笔半径和任何其他参数)比你用来存储位图。

如果这一切都失败了,如果您的编辑只能使用太大而无法放入调整数据的数据来描述,请注意 Apple 留下的关于使用 UUID 的提示——您可以将数据存储在照片外部,并使用调整数据以存储一个密钥,使您可以在外部存储中查找编辑。 (当然,然后你必须确保你的外部存储在 iCloud 照片库同步到的所有地方,并且如果你不能访问它,有办法优雅地退回,等等......)


哦,至于上限是多少……Apple 可能没有公布上限,因为它可能会因设备、iCloud 帐户状态、OS 版本或一些其他因素。因此,即使您通过实验找到了一个极限,它也可能并不总是成立。