Search code examples
iosswiftswift4

Show just selected images in gallery using BSImagePicker Swift4


I'm using 'BSImagePicker'.but I have a problem first time i am going to select 2 images in gallery, after selecting 2 images returning to my viewController ,again i am going to select image in gallery but i can't see selected images

I want to see just selected picture in albums.

this is my BSImagePicker method

let vc = BSImagePickerViewController()
    vc.maxNumberOfSelections = 2
    vc.takePhotos = true
    bs_presentImagePickerController(vc, animated: true,
                                    select: { (asset: PHAsset) -> Void in
                                        print("Selected: \(asset)")
    }, deselect: { (asset: PHAsset) -> Void in
        print("Deselected: \(asset)")
    }, cancel: { (assets: [PHAsset]) -> Void in
        print("Cancel: \(assets)")
    }, finish: { (assets: [PHAsset]) -> Void in
        print("Finish: \(assets)")
        print(assets.count)
        for i in 0..<assets.count {
            self.SelectedAssets.append(assets[i])
            print(self.SelectedAssets)
        }
    }, completion: nil)

Any help


Solution

  • var arrSelectedPics : [Any] = []
        var SelectedAssets = [PHAsset]()
        var PhotoArray: [Data] = []
        
        // for only photo upload
        func photoUpload(){
            
            // create an instance
            let vc = BSImagePickerViewController()
            
            //display picture gallery
            self.bs_presentImagePickerController(vc, animated: true,
                                                 select: { (asset: PHAsset) -> Void in
                                                    
                                                 }, deselect: { (asset: PHAsset) -> Void in
                                                    // User deselected an assets.
                                                    
                                                 }, cancel: { (assets: [PHAsset]) -> Void in
                                                    // User cancelled. And this where the assets currently selected.
                                                 }, finish: { (assets: [PHAsset]) -> Void in
                                                    // User finished with these assets
                                                    for i in 0..<assets.count
                                                    {
                                                        self.SelectedAssets.append(assets[i])
                                                        let resource = PHAssetResource.assetResources(for: assets[i]).first
                                                        let name = resource?.originalFilename
                                                        let PicsLocalPath = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(name!)
                                                        
                                                        print("----------------PicsLocalPath-------------",PicsLocalPath)
                                                        
                                                        
                                                        self.arrSelectedPics.append(PicsLocalPath)
                                                        
                                                    }
                                                    
                                                    self.convertAssetToImages()
                                                    print("----------------assets-------------",self.arrSelectedPics)}, completion: nil)
        }
        
        
        // convert assets to images
        func convertAssetToImages() -> Void {
            
            if SelectedAssets.count != 0{
                
                for i in 0..<SelectedAssets.count{
                    
                    let manager = PHImageManager.default()
                    let option = PHImageRequestOptions()
                    var thumbnail = UIImage()
                    option.isSynchronous = true
                    
                    manager.requestImage(for: SelectedAssets[i], targetSize: CGSize(width: 200, height: 200), contentMode: .aspectFill, options: option, resultHandler: {(result, info)->Void in
                        thumbnail = result!
                    })
                    
                    let data = thumbnail.jpegData(compressionQuality: 1)
                    
                    self.PhotoArray.append(data!)
                }
            }
            //final images array
            print("complete photo array \(self.PhotoArray)")
        }