将[PHAsset]数组转换为[UIImage]

时间:2018-01-29 15:49:55

标签: ios swift photokit

有没有办法将Phasset数组转换为UIImage?

var images = [PHAsset]()

func getImages() {
    let assets = PHAsset.fetchAssets(with: PHAssetMediaType.image, options: nil)
    assets.enumerateObjects({ (object, count, stop) in
        // self.cameraAssets.add(object)
        self.images.append(object)
    })

    //In order to get latest image first, we just reverse the array
    self.images.reverse()

3 个答案:

答案 0 :(得分:2)

Swift 4

中将PHASSET的数组转换为UIIMAGE
 //MARK: Convert array of PHAsset to UIImages
    func getAssetThumbnail(assets: [PHAsset]) -> [UIImage] {
        var arrayOfImages = [UIImage]()
        for asset in assets {
            let manager = PHImageManager.default()
            let option = PHImageRequestOptions()
            var image = UIImage()
            option.isSynchronous = true
            manager.requestImage(for: asset, targetSize: CGSize(width: 100, height: 100), contentMode: .aspectFit, options: option, resultHandler: {(result, info)->Void in
                image = result!
                arrayOfImages.append(image)
            })
        }

        return arrayOfImages
    }

答案 1 :(得分:0)

fileprivate let imageManager = PHCachingImageManager()

        // Request an image for the asset from the **PHCachingImageManager**.
        let asset = images.object(at: 0) //Index will be dynamic according to your requirement


        imageManager.requestImage(for: asset, targetSize: thumbnailSize, contentMode: .aspectFill, options: nil, resultHandler: { image, _ in

            print("need image is \(image)")


        })

答案 2 :(得分:0)

 let imageManager = PHImageManager.default()
 let requestOptions = PHImageRequestOptions()
 let fetchOptions = PHFetchOptions()
 var imageArray = [UIImage]()

 override func viewDidLoad(){
  super.viewDidLoad()
  requestOptions.isSynchronous = true
  requestOptions.deliveryMode = 
  PHImageRequestOptionsDeliveryMode.highQualityFormat
  fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
  grabphoto()
  }

在这里,我们调用抓取照片功能,获取类型图像的PHAsset并将其转换为UIImage

func grabPhotos(){
 if let fetchResult : PHFetchResult = PHAsset.fetchAssets(with:.image,options: fetchOptions){
  if fetchResult.count > 0{
    if let fetchResult : PHFetchResult = PHAsset.fetchAssets(with:.image, options: self.fetchOptions){
       self.imageManager.requestImage(for: fetchResult.object(at: indexPath.row) as! PHAsset, targetSize: CGSize(width : 112, height : 116), contentMode: .aspectFill , options:
       self.requestOptions, resultHandler: { (image, error) in
       self.imageArray.append(image!)})
    }
   }else {
          print("no photos! ")

         }
       }
}