Можно получить изображение из PHAsset библиотеки

Я использую QBImagePickerController для одновременного выбора нескольких изображений.

Итак, вот весь мой код

Я представляю imagepickerController с этим кодом

let imagePickerController = QBImagePickerController()
imagePickerController.delegate = self
imagePickerController.allowsMultipleSelection = true
imagePickerController.mediaType = .Image
self.presentViewController(imagePickerController, animated: 
true, completion: nil)

поэтому, когда я выбираю несколько изображений и нажимаю «Готово», этот метод вызывается

func qb_imagePickerController(imagePickerController: QBImagePickerController!, didFinishPickingAssets assets: [AnyObject]!) {
        for asset in assets {
            print(asset.fileName)   
        }
        self.dismissViewControllerAnimated(true, completion: nil)
    }

Например, я выбираю одно изображение, затем оно печатается вот так

<PHAsset: 0x7fc55d954500> 6006CE57-81FE-4DC0-8C52-5DB43CE7638D/L0/001 mediaType=1/0, sourceType=1, (1920x1080), creationDate=2016-05-26 09:15:34 +0000, location=0, hidden=0, favorite=0 

Из этого, как я могу получить изображение и установить его в виде коллекции?

Я получаю от него имя файла, но не стоит устанавливать из него изображение.

Я использую filePathURL, fileURL, absoluteURL, но ничего не произошло, произошел сбой

Пожалуйста, помогите мне с этим.
Спасибо.


person Jitendra Modi    schedule 27.12.2016    source источник
comment
Возможный дубликат при преобразовании PHAsset в UIImage теряет прозрачность   -  person Nirav D    schedule 27.12.2016
comment
@Jecky проверить мой ответ   -  person jignesh Vadadoriya    schedule 27.12.2016


Ответы (2)


Вам нужно использовать requestImageForAsset, чтобы получить UIImage. Вы можете получить изображение таким образом

func qb_imagePickerController(imagePickerController: QBImagePickerController!, didFinishPickingAssets assets: [AnyObject]!) {


    let requestOptions = PHImageRequestOptions()
    requestOptions.resizeMode = PHImageRequestOptionsResizeMode.Exact
    requestOptions.deliveryMode = PHImageRequestOptionsDeliveryMode.HighQualityFormat
    // this one is key
    requestOptions.synchronous = true

    for asset in assets
    {
        if (asset.mediaType == PHAssetMediaType.Image)
        {

            PHImageManager.defaultManager().requestImageForAsset(asset as! PHAsset, targetSize: PHImageManagerMaximumSize, contentMode: PHImageContentMode.Default, options: requestOptions, resultHandler: { (pickedImage, info) in

                self.yourImageview.image = pickedImage // you can get image like this way

            })

        }
    }
    imagePickerController.dismissViewControllerAnimated(true, completion: nil)
}
person jignesh Vadadoriya    schedule 27.12.2016
comment
Я выбираю несколько изображений из средства выбора изображений и показываю их в моем представлении коллекции. В этом представлении коллекции у меня есть одна кнопка удаления, поэтому, когда я удаляю это изображение, как я могу удалить выделение в imagepickercontroller - person Jitendra Modi; 27.12.2016
comment
вы можете удалить таким образом imagePickerController.selectedAssets.removeObject (актив как! PHAsset) - person jignesh Vadadoriya; 27.12.2016
comment
поэтому мне нужно преобразовать изображение в актив, а затем удалить его из выбора - person Jitendra Modi; 27.12.2016
comment
вы не можете преобразовать UIImage в PHAssets. - person jignesh Vadadoriya; 27.12.2016
comment
поэтому вам нужно поддерживать массив PHAssets, например [PHAssets]. И при удалении PHAssets в это время вам нужно получить PHAssets из массива и удалить эти активы. - person jignesh Vadadoriya; 27.12.2016
comment
Я получаю pickImage как ноль. - person Sneha; 29.11.2017

Получить URL-адрес видео из PHAsset в Swift 4.2 из didFinishPickingAssets в QBImagePickerController

let imagePicker = QBImagePickerController()
imagePicker.delegate = self
imagePicker.numberOfColumnsInPortrait = 2
imagePicker.maximumNumberOfSelection = 2
imagePicker.allowsMultipleSelection = true
imagePicker.mediaType = .video

self.present(imagePicker, animated: true, completion: nil)

func qb_imagePickerController(_ imagePickerController: QBImagePickerController!, didFinishPickingAssets assets: [Any]!) {
    for asset in assets
    {
        PHCachingImageManager().requestAVAsset(forVideo: asset as! PHAsset, options: nil, resultHandler: {(asset, audioMix, info) -> Void in
            if asset != nil {
                let avasset = asset as! AVURLAsset
                let urlVideo = avasset.url
                yourarray.add(urlVideo as URL)
            }

        })

    }


    imagePickerController.dismiss(animated: true) {
        //You can access video urls here
        print("Total Videos:\(yourarray.count)")
    }

}
person Mahesh Chaudhari    schedule 24.04.2019