我正在尝试使用以下代码从Swift iOS7中的ALAssetsLibrary加载图像(早先从UIImagePickerController中获取并保存在Assets Library中):
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 Orientation。只有通过UIImagePickerController拍摄的图像才会发生这种情况。 关于为什么会发生这种情况以及如何解决问题的任何想法?为UICollectionView加载全分辨率图像是一件令人失望的事情,需要花费大量的时间和内存。
如何获得缩略图的正确方向?感谢。
答案 0 :(得分:2)
你有没有试过像:
UIImage(CGImage:asset?.aspectRatioThumbnail().takeUnretainedValue())
aspectRatioThumbnail()为您提供与全分辨率图像具有相同比率和方向的缩略图。
和我一样,我使用了UIImage init的缩放和方向参数并且方向错误,然后我试了一下,方向总是正确的。