#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. Вот что я в итоге сделал. Я забыл вернуться сюда и отметить правильный ответ. Надеюсь, это поможет другим. Спасибо за ответ.