[英]Store multiple images in image array to upload to Firebase using BSImagePicker
[英]BSImagePicker all Images blurred
我使用 BSImagePicker 而不是 UIImagePicker 來啟用多選。 我為此使用以下代碼:
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)
為了將 PHAsset 轉換為圖像,我使用了以下代碼:
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,則所有圖像都會略微模糊,選擇后圖像仍然模糊。
那是選擇屏幕的圖像:
這是所選圖像的圖像:
例如,如果我使用 UIImagePicker,這是一個圖像:
您可以添加這兩個PHImageRequestOptions
來告訴照片提供高質量的圖像(可能會犧牲速度)。
option.deliveryMode = .highQualityFormat
option.resizeMode = .exact
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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.