使用具有固定宽度和可变高度的PHImageManager时的低分辨率图像

时间:2015-05-12 16:20:14

标签: ios swift photosframework

我使用Photos Framework请求图片在UIImageView中按照用户定义的参数显示。

我基本上使用这段代码:

var options = PHImageRequestOptions()
options.version = PHImageRequestOptionsVersion.Current
options.deliveryMode =  PHImageRequestOptionsDeliveryMode.HighQualityFormat
options.resizeMode = PHImageRequestOptionsResizeMode.Exact
options.networkAccessAllowed = true

PHImageManager.defaultManager().requestImageForAsset(asset, targetSize: targetSize, contentMode: PHImageContentMode.AspectFill, options: options) { (result: UIImage!, info) -> Void in
    if !info[PHImageResultIsDegradedKey]!.boolValue {
        println("targetSize: \(targetSize)")
        println("asset.pixelWidth: \(asset.pixelWidth)")
        println("asset.pixelHeight: \(asset.pixelHeight)")
        println("result.size: \(result.size)")
    }
}

用户可以选择"适合宽度"或者#34; fit-height"选项。在" fit-width"中,我使用:

targetSize = CGSizeMake(width, PHImageManagerMaximumSize.height)

在" fit-height"中,我使用:

targetSize = CGSizeMake(PHImageManagerMaximumSize.width, height)

其中widthheight是从UIImageView的维度动态获取的。我的想法是,通过在非固定维度中使用PHImageManagerMaximumSize而在PHImageContentMode.AspectFill中使用contentMode,我将获得最适合我的UIImageView的图像。

"适合宽度"选项:

targetSize: (2122.40673828125, -1.0)
asset.pixelWidth: 2048
asset.pixelHeight: 1536
result.size: (60.0, 45.0)

"适合高度"选项:

targetSize: (-1.0, 2241.7099609375)
asset.pixelWidth: 2048
asset.pixelHeight: 1536
result.size: (2048.0, 1536.0)

问题出现在第一种情况下:用户在使用" fit-width"时看到的是非常低分辨率的图像。选项。

我做错了什么,或者这是PHImageManager的问题?

1 个答案:

答案 0 :(得分:1)

尝试同步调用此方法。这将立即为您提供正确尺寸和质量的图像。试试这个:

options.synchronous = true
相关问题