以下のコードを使用して、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 のフル解像度の画像を読み込むのは面倒で、多くの時間とメモリが必要です。
サムネイルの正しい向きを取得するにはどうすればよいですか? ありがとう。