iOS Photos

PHImageRequestOptions

  • 1、synchronous: 指定请求是否同步执行。
  • 2、resizeMode: 对请求的图像怎样缩放。有三种选择:None,不缩放;Fast,尽快地提供接近或稍微大于要求的尺寸;Exact,精准提供要求的尺寸。
    deliveryMode: 图像质量。有三种值:Opportunistic,在速度与质量中均衡;HighQualityFormat,不管花费多长时间,提供高质量图像;FastFormat,以最快速度提供好的质量。
  • 3、normalizedCropRect: 用于对原始尺寸的图像进行裁剪,基于比例坐标。只在 resizeMode 为 Exact 时有效。
  • 4、resizeMode 默认是 None,这也造成了返回图像尺寸与要求尺寸不符。这点需要注意。要返回一个指定尺寸的图像需要避免两层陷阱:一定要指定 options 参数,resizeMode 不能为 None。
  • 5、version 属性来做到:.Current 会递送包含所有调整和修改的图像;.Unadjusted 会递送未被施加任何修改的图像;.Original 会递送原始的、最高质量的格式的图像 (例如 RAW 格式的数据。而当将属性设置为 .Unadjusted 时,会递送一个 JPEG)。

注意

  • 1、deliveryMode:图像质量。有三种值:Opportunistic,在速度与质量中均衡;HighQualityFormat,不管花费多长时间,提供高质量图像;FastFormat,以最快速度提供好的质量。这里应该是只有在synchronous为false 时有效。
  • 2、synchronous为true时,同步请求,我们设置的deliveryMode 会被忽略,以HighQualityFormat的标准返回图像。
  • 3、synchronous为true时,同步请求,resultHandler只会执行一次。
  • 4、synchronous为false时,异步请求,resultHandler是否会被多次调用取决于deliveryMode属性:1、deliveryMode是HighQualityFormat ,resultHandler调用一次,框架只返回高质量图。2、deliveryMode是FastFormat,resultHandler也只被调用一次,保证速度尽可能保证图片质量。3、deliveryMode是.Opportunistic Photos 可能会先提供低质量的图像以供临时显示,随后会将指定尺寸的图像返回。如果指定尺寸的高质量的图像有缓存,那么直接提供高质量的图像。

resultHandler中的info 字典提供了关于当前请求状态的信息

  • 1、图像是否必须从 iCloud 请求 (如果你初始化时将 networkAccessAllowed 设置成 false,那么就必须重新请求图像) —— PHImageResultIsInCloudKey 。
  • 2、当前递送的 UIImage 是否是最终结果的低质量格式。当高质量图像正在下载时,这个可以让你给用户先展示一个预览图像 —— PHImageResultIsDegradedKey。
  • 3、请求 ID (可以便捷的取消请求),以及请求是否已经被取消 —— PHImageResultRequestIDKey 和 PHImageCancelledKey。如果没有图像提供给 result handler,字典内还会有一个错误信息 —— PHImageErrorKey。

推荐阅读更多精彩内容