• TZImagePickerController获取原图


    调起相册

    let imgSelectVC = TZImagePickerController(maxImagesCount: 1, columnNumber: 4, delegate: self, pushPhotoPickerVc: true)

    imgSelectVC?.allowPickingOriginalPhoto = true

    imgSelectVC?.allowPickingVideo = false

    imgSelectVC?.allowPickingGif = false

    imgSelectVC?.allowTakeVideo = false

    imgSelectVC?.showSelectBtn = true

    imgSelectVC?.allowTakePicture = false

    weakSelf.present(imgSelectVC!, animated: true, completion: nil)

    获取原图方法:   -> 代理方法:

      func imagePickerController(_ picker: TZImagePickerController!, didFinishPickingPhotos photos: [UIImage]!, sourceAssets assets: [Any]!, isSelectOriginalPhoto: Bool) {

            if isSelectOriginalPhoto{

                //选择了原图

                guard let assets = assets as? [PHAsset] else {

                    return

                }

                /// 初始化信号量为1,最大并发为1,为0时会等待

                let semap = DispatchSemaphore.init(value: 0)

                var source: [YPQuickImageCCellVM] = []

                DispatchQueue.main.async {

                    YPProgressHUD.show()

                }

                DispatchQueue.global().async {

                    let group = DispatchGroup()

                    let queue = DispatchQueue.global()

                    assets.forEach { asset in

                        queue.async(group: group, execute: {

                            

                        })

                    }

                    assets.forEach { asset in

                        let item = YPQuickImageCCellVM.init(image: nil, asset: asset)

                        TZImageManager.default().getOriginalPhoto(with: asset) { image, info in

                            /// 是否是低清图

                            guard let isThumb = info?["PHImageResultIsDegradedKey"] as? Bool else{ return }

                            if isThumb{

                                //缩略图

                                item.image = image

                            }else{

                                //高清图

                                item.original = image

                                semap.signal()

                            }

                        }

                        semap.wait()

                        source.append(item)

                    }

                    DispatchQueue.main.async {[weak self] in

                        YPProgressHUD.hide()

                        guard let weakSelf = self else {return}

                        var dataSource: [YPQuickImageCCellVM] = source

                        if source.count < 3,

                           let image = UIImage.init("image_updat"){

                            dataSource.append(.init(default: image))

                        }

                        weakSelf.dataSource.accept(dataSource)

                    }

                }

            }else{

                let source = photos.enumerated().map{ photo -> YPQuickImageCCellVM in

                    return YPQuickImageCCellVM.init(image: photo.element, asset: assets.safe(idx: photo.offset) as? PHAsset)

                }

                var dataSource: [YPQuickImageCCellVM] = source

                if source.count < 3,

                   let image = UIImage.init("image_updat"){

                    dataSource.append(.init(default: image))

                }

                self.dataSource.accept(dataSource)

            }

        }

    }

    主要是通过 TZImageManager.default().getOriginalPhoto(with: asset)方法获取原图. 注意的是需要到异步线程操作.

  • 相关阅读:
    组合数学——cf893E
    前缀和+贪心+线段树——cf893D
    期望线性性+线段树双tag标记——cf895E
    状压dp+数论——cf895C好题!
    官方资料&一些好的博客与技术点
    批处理小技巧总结
    使用 SP_OAXXX 创建文件夹,注意区别于 xp_cmdshell --mkdir xxx
    第一次使用并配置Hibernate
    做一个有心人
    强说愁
  • 原文地址:https://www.cnblogs.com/supersr/p/15629335.html
Copyright © 2020-2023  润新知