我已经彻底阅读了最新的 iOS8 相框作品,我正在尝试从用户库中获取一些资产以进行显示。我让用户一次编辑 4 张图像。但正因为如此,我需要压缩图像,否则应用程序会崩溃。
我正在使用 PHImageManager 通过以下代码加载图像:
func processImages()
{
println("Processing")
_selectediImages = Array()
_cacheImageComplete = 0
for asset in _selectedAssets
{
var options:PHImageRequestOptions = PHImageRequestOptions()
options.version = PHImageRequestOptionsVersion.Unadjusted
options.synchronous = true
var minRatio:CGFloat = 1
if(CGFloat(asset.pixelWidth) > UIScreen.mainScreen().bounds.width || CGFloat(asset.pixelHeight) > UIScreen.mainScreen().bounds.height)
{
minRatio = min(UIScreen.mainScreen().bounds.width/(CGFloat(asset.pixelWidth)), (UIScreen.mainScreen().bounds.height/CGFloat(asset.pixelHeight)))
}
var size:CGSize = CGSizeMake((CGFloat(asset.pixelWidth)*minRatio),(CGFloat(asset.pixelHeight)*minRatio))
println("Target size is \(size)")
PHImageManager.defaultManager().requestImageForAsset(asset, targetSize:size, contentMode: .AspectFill, options: options)
{
uiimageResult, info in
var image = iImage(uiimage: uiimageResult)
println("Result Size Is \(uiimageResult.size)")
}
}
}
如您所见,我正在计算目标尺寸以确保图像至少不大于屏幕。如果是,我会在图像上按比例缩小。然而,这是一个典型的打印日志
目标大小为 (768.0,798.453531598513) 结果大小为 (1614.0,1678.0)
即使我将目标大小设置为 768x798(在这种特定情况下),它给我的结果 UIImage 是它的两倍多。现在根据文档,targetSize 参数
“要返回的图像的目标大小。”
不是最清楚的解释,但从我的实验来看,它与此不符。
如果你有一些建议,我很想听听!