代码之家  ›  专栏  ›  技术社区  ›  Philipp Rosengart

BSImagePicker所有图像模糊

  •  0
  • Philipp Rosengart  · 技术社区  · 6 年前

    我使用BSImagePicker而不是UIImagePicker来启用multi-select。 我正在为此使用以下代码:

        let bsImagePicker = BSImagePickerViewController()
        bsImagePicker.maxNumberOfSelections = 4
    
        self.bs_presentImagePickerController(bsImagePicker, animated: true, select: { (asset : PHAsset) in
    
        }, deselect: { (asset : PHAsset) in
    
        }, cancel: { (assets : [PHAsset]) in
    
        }, finish: { (assets : [PHAsset]) in
    
            for asset in assets {
    
                self.selectedAssets.append(asset)
    
                self.convertAssetsToImage()
            }
    
        }, completion: nil)
    

    为了将相位集转换成图像,我使用以下代码:

    func convertAssetsToImage() {
    
        for asset in selectedAssets {
    
            let manager = PHImageManager.default()
            let option = PHImageRequestOptions()
            var thumbnail = UIImage()
            option.isSynchronous = true
    
            manager.requestImage(for: asset, targetSize: CGSize(width: 340, height: 365), contentMode: .aspectFit, options: option, resultHandler: {(result, info) -> Void in
    
                thumbnail = result!
            })
    
            self.selectedPhotos.append(thumbnail)
        }
    
        DispatchQueue.main.async {
    
            self.imageViewImage.animationImages = self.selectedPhotos
            self.imageViewImage.animationDuration = 5.0
            self.imageViewImage.startAnimating()
        }
    }
    

    但所有的图像都是模糊的。如果显示ImagePicker,则所有图像都会稍微模糊,选择后图像仍然模糊。

    这是选择屏幕的图像:

    Selection Screen

    这是所选图像的图像:

    Blurred Image

    例如,如果我使用UIImagePicker,这是一个图像:

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  0
  •   Sanket_B    6 年前

    你可以把这两个加起来 PHImageRequestOptions 告诉照片提供高质量的图像(可能牺牲速度)。

    option.deliveryMode = .highQualityFormat
    option.resizeMode = .exact
    
        2
  •  0
  •   Mr.Javed Multani    4 年前

    100%为我工作:)

                       let option = PHImageRequestOptions()
                        option.deliveryMode = .highQualityFormat
                        option.resizeMode = .exact
    
                        PHImageManager.default().requestImage(for: asset, targetSize: PHImageManagerMaximumSize, contentMode: .aspectFit, options: option) { (image, info) in
                            // Do something with image
                           
                        }