简体   繁体   English

使用 BSImagePicker Swift4 在图库中显示选定的图像

[英]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我正在使用'BSImagePicker'。但是我第一次遇到问题我要去画廊中的select 2张图片,在选择2张图片返回我的viewController之后,我再次去画廊中的select图片但我看不到选择图片

I want to see just selected picture in albums.我想在相册中看到刚刚选择的图片。

this is my BSImagePicker method这是我的 BSImagePicker 方法

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任何帮助

Provide your assets to this line code , it will return you the images .将您的资产提供给此行代码,它将返回您的图像。

Your this method under dispatch.你的这个方法正在调度中。

print("Finish: \(assets)")
if let imageView = vc.imageView {
    PHCachingImageManager.default().requestImage(for: asset, targetSize:imageView.frame.size, contentMode: .aspectFit, options: options) { (result, _) in
                            imageView.image = result
                       }
 }
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)")
    }

Updated for iOS 15 and above更新为 iOS 15 岁及以上

You have to add the Photos Framework您必须添加照片框架

import Photos导入照片

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM