我正在尝试使用以下代码在 Swift 中从 iOS7 中的 ALAssetsLibrary 加载图像(之前从 UIImagePickerController 获取并保存在资产库中):
assetsLibrary.assetForURL(NSURL(string: image.diskPath), resultBlock: {
asset in
if let validAsset = asset {
let rep = validAsset.defaultRepresentation()
let imageData = rep.fullResolutionImage()
//let imageData = validAsset.thumbnail()
var imageOrientation: UIImageOrientation = .Down
let orientValueFromImage = validAsset.valueForProperty("ALAssetPropertyOrientation") as NSNumber
imageOrientation = UIImageOrientation.fromRaw(orientValueFromImage.integerValue)!
let imageToAdd = UIImage(CGImage: imageData.takeUnretainedValue(), scale: 1, orientation: imageOrientation)
self.imagesForCollectionView.append(imageToAdd)
fetchedImageCount++
if fetchedImageCount == fetchedImages.count{
self.collectionView.reloadData()
}
}
}, failureBlock: {error in
NSLog("error %@", error.debugDescription)
})
当我使用 let imageData = rep.fullResolutionImage() 时,我得到了图像的正确 UIImageOrientation,但是当我用 let imageData = validAsset.thumbnail() 替换该行时,我总是得到一个 .Right 方向。这只发生在通过 UIImagePickerController 获取的图像上。关于为什么会发生这种情况以及如何解决它的任何想法?为 UICollectionView 加载全分辨率图像是一件很糟糕的事情,并且需要大量的时间和内存。
如何获得缩略图的正确方向?谢谢。