【问题标题】:PHAdjustmentData size limitationPHAdjustment数据大小限制
【发布时间】:2016-12-02 11:44:37
【问题描述】:

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

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

【问题讨论】:

    标签: ios photosframework


    【解决方案1】:

    documentation for PHAdjustmentData.init 注释(重点是我的):

    由于“照片”会限制调整数据的大小,因此您应该保持编辑信息简短且具有描述性。 不要使用图像数据来描述编辑,而是只保存重新创建编辑所需的最少信息。

    您的应用必须为 data 参数提供一个非空的 NSData 对象。如果您无法提供相关数据来描述编辑,您可以传递对 NSUUID 对象进行编码的数据。

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

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

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


    哦,至于上限是多少……Apple 可能不会公布上限,因为它可能会因设备、iCloud 帐户状态、操作系统版本或其他一些因素而发生变化。因此,即使您通过实验找到了一个限制,它也可能并不总是成立。

    【讨论】:

    • 感谢您的全面回答!我可以看到调整数据的目的及其限制。不幸的是,一旦有了交互式编辑组件,事情就会变得更加复杂(例如,用户可以绘制蒙版)。我将测试我可以压缩这些数据的程度。否则,您也可以选择跟踪触摸的想法。
    【解决方案2】:

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

    【讨论】:

    猜你喜欢
    • 2015-05-13
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多