Неправильная ориентация миниатюр на iOS7 ALAsset

#ios7 #alasset #uiimageorientation #alassetlibrary

#ios7 #alasset #ориентация uiimageorientation #alassetlibrary

Вопрос:

Я пытаюсь загрузить изображения (взятые ранее из UIImagePickerController и сохраненные в библиотеке Assets) из ALAssetsLibrary в iOS7 в Swift, используя приведенный ниже код:

 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(), я всегда получаю .Правильная ориентация. Это происходит только с изображениями, полученными через UIImagePickerController.
Есть идеи о том, почему это происходит и как это исправить? Загрузка изображения в полном разрешении для UICollectionView — это облом, который отнимает много времени и памяти.

Как я могу получить правильную ориентацию эскиза? Спасибо.

Ответ №1:

Вы пробовали что-то вроде :

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

aspectRatioThumbnail() выдает эскиз, который имеет то же соотношение и ориентацию, что и изображение в полном разрешении.

Как и вы, я использовал параметры масштаба и ориентации для инициализации UIImage и получил неправильную ориентацию, затем я попробовал без, и ориентация всегда правильная.

Комментарии:

1. Вот что я в итоге сделал. Я забыл вернуться сюда и отметить правильный ответ. Надеюсь, это поможет другим. Спасибо за ответ.