iOS7 ALAsset缩略图不正确的方向

时间:2014-07-04 01:58:09

标签: ios7 alasset uiimageorientation alassetlibrary

我正在尝试使用以下代码从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加载全分辨率图像是一件令人失望的事情,需要花费大量的时间和内存。

如何获得缩略图的正确方向?感谢。

1 个答案:

答案 0 :(得分:2)

你有没有试过像:

UIImage(CGImage:asset?.aspectRatioThumbnail().takeUnretainedValue())

aspectRatioThumbnail()为您提供与全分辨率图像具有相同比率和方向的缩略图。

和我一样,我使用了UIImage init的缩放和方向参数并且方向错误,然后我试了一下,方向总是正确的。