坑爹的PHImageManager和PHImageRequestOptions

测试环境:XCode 9.2 / 模拟器 6s - iOS 11.2

         1. synchronous = YES. 同步。只返回一张图片并且deliveryMode会忽略用户设置的值,直接设为 PHImageRequestOptionsDeliveryModeHighQualityFormat。
            a. resizeMode: PHImageRequestOptionsResizeModeNone: 返回的是原图大小
            b. resizeMode: PHImageRequestOptionsResizeModeFast: 当原图是压缩图时,会使用targetSize来最优解码图片,获得的图片大小可能比targetSize大
            c. resizeMode: PHImageRequestOptionsResizeModeExact: 解压和Fast一样,但是返回的是指定targetSize的高质量图
         
         
         2. synchronous: NO. 异步。
            a. deliveryMode: PHImageRequestOptionsDeliveryModeOpportunistic: 会返回多张图片
                1). PHImageRequestOptionsResizeModeNone: 先返回低清的缩略图,再返回原图大小
                2). PHImageRequestOptionsResizeModeFast: 先返回低清的缩略图,再返回的图片如 1-b 一样
                3). PHImageRequestOptionsResizeModeExact: 先返回低清的缩略图,再返回的图片如 1-c一样
         
            b. deliveryMode: PHImageRequestOptionsDeliveryModeHighQualityFormat: 只会返回一张高清图片
                1). PHImageRequestOptionsResizeModeNone: 如 1-a 一样
                2). PHImageRequestOptionsResizeModeFast: 如 1-b 一样
                3). PHImageRequestOptionsResizeModeExact: 如 1-c一样
         
            c. deliveryMode: PHImageRequestOptionsDeliveryModeFastFormat: 只会返回一张图片,并且可能是低清图
                1). PHImageRequestOptionsResizeModeNone: 返回一张低清图
                2). PHImageRequestOptionsResizeModeFast: 返回一张低清图
                3). PHImageRequestOptionsResizeModeExact: 返回一张低清图
复制代码

上述测试结果是在 requestImageForAsset:targetSize:contentMode:options:resultHandler: 方法中的 contentMode 为 PHImageContentModeAspectFit,targetSize 是按照图片的像素大小、屏幕宽度和屏幕分辨率计算的比例所得到的。如下:

         CGFloat aspectRatio = asset.pixelWidth / (CGFloat)asset.pixelHeight;
         CGFloat pixelWidth = kScreenWidth * kScreenScale;
         CGFloat pixelHeight = pixelWidth / aspectRatio;
         CGSize targetSize = CGSizeMake(pixelWidth, pixelHeight);
复制代码

如果 targetSize 不是如上计算结果的比例尺寸,而是随意设置,并且 contentMode 为 PHImageContentModeAspectFill 的话,则得到的图片可能会变形。如果 contentMode 为 PHImageContentModeAspectFit 时,则会根据 targetSize、deliveryMode、resizeMode 设置的值等比缩放。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值