0

我正在尝试使用以下代码在 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 加载全分辨率图像是一件很糟糕的事情,并且需要大量的时间和内存。

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

4

1 回答 1

2

您是否尝试过类似的方法:

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

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

像你一样,我使用 UIImage init 的比例和方向参数并得到错误的方向,然后我尝试不使用并且方向总是正确的。

于 2015-04-08T09:50:58.290 回答