使用固定宽度和可变高度的PhimageManager时,低分辨率图像



我正在使用照片框架请求在用户定义的参数下显示在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)")
    }
}

用户可以选择" fitth"或" fit-Height"选项。在" fittth"中,我使用:

targetSize = CGSizeMake(width, PHImageManagerMaximumSize.height)

在" Fit-Height"中,我使用:

targetSize = CGSizeMake(PHImageManagerMaximumSize.width, height)

从UIImageView的尺寸动态获得widthheight。我的想法是,通过在非固定尺寸中使用PHImageManagerMaximumSize,将PHImageContentMode.AspectFill用于contentMode,我将获得适合我的UIImageView的最大图像。

" fit-width"选项:

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

" fit-height"选项:

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

问题在第一种情况下发生:使用"拟合宽度"选项时,用户看到的是非常低分辨率的图像。

我是在做错事还是phimageManager的问题?

尝试同步调用此方法。这将为您提供正确的图像和质量的形象。尝试以下操作:

options.synchronous = true

最新更新