2014-07-04 25 views
0

我想用下面的代码加载从ALAssetsLibrary在iOS7图像(从早期的UIImagePickerController拍摄并保存在图书馆的资产)的斯威夫特:iOS7 ALAsset缩略图不正确的方向

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) 
      }) 

当我使用让imageData = rep.fullResolutionImage(),我得到正确的UIImageOrientation图像,但是当我用let imageData = validAsset.thumbnail()替换那一行时,我总是得到一个.Right方向。只有通过UIImagePickerController拍摄的图像才会发生这种情况。 任何想法,为什么发生这种情况,以及如何解决它?加载UICollectionView的完整分辨率图像是一件令人失望的事情,需要花费大量的时间和内存。

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

回答

2

你有没有尝试过这样的:

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

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

和你一样我用UIImage init的尺度和方向参数,得到了错误的方向,然后我试着没有,方向总是正确的。

+0

这就是我最终做的。我忘了回到这里,并正确地标记答案。希望它能帮助别人。感谢您的回应。 –