簡體   English   中英

如何使用 Swift 從圖庫中選擇多個視頻和照片

[英]How to pick multiple videos as well as photos from gallery using Swift

我正在嘗試從圖庫中選擇照片和視頻。

我做了一些事情,比如挑選照片但沒有顯示視頻。 我使用過 BSImagepicker 庫,但在該庫中沒有找到任何與視頻相關的內容。 如果有人做過此類工作或了解任何其他同時選擇照片和視頻的圖書館,請參考。

import UIKit
import Photos
import BSImageView
import BSImagePicker

class ViewController: UIViewController {
    let pickerController = BSImagePickerViewController()
    var SelectedAssets = [PHAsset]()
    var PhotoArray = [UIImage]()
    @IBOutlet var imageView: UIImageView!

    @IBAction func buttonAction(_ sender: Any) {
        pickImages()
    }

    func pickImages() {
        self.bs_presentImagePickerController(pickerController, animated: true, select: { (asset: PHAsset) in
        }, deselect: { (assets: PHAsset) in
        }, cancel: { (assets: [PHAsset]) in
        }, finish: { (assets: [PHAsset]) in
            for i in 0..<assets.count {
                self.SelectedAssets.append(assets[i])
            }
            self.convertAssetToImages()
        }, completion: nil)
    }

    func convertAssetToImages(){
        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: 500, height: 500), contentMode: .aspectFit, options: option, resultHandler: { (result, info) in
                    thumbnail = result!
                })
                let data = UIImageJPEGRepresentation(thumbnail, 0.7)
                let newImage = UIImage(data: data!)
                self.PhotoArray.append(newImage! as UIImage)
            }
            hcArray = PhotoArray
            self.imageView.animationImages = self.PhotoArray
            self.imageView.animationDuration = 3.0
            self.imageView.startAnimating()
        }
    }
}

GalleryGitHub開源庫,用於從iOS照片中選擇圖像和視頻。

https://github.com/hyperoslo/Gallery

初始化:

GalleryController是主要的入口點,只需實例化並為其提供委托。

let gallery = GalleryController()
gallery.delegate = self
present(gallery, animated: true, completion: nil)

代表:

GalleryControllerDelegate要求您實現一些委托方法以便與選擇器進行交互

func galleryController(_ controller: GalleryController, didSelectImages images: [Image])
func galleryController(_ controller: GalleryController, didSelectVideo video: Video)
func galleryController(_ controller: GalleryController, requestLightbox images: [Image])
func galleryControllerDidCancel(_ controller: GalleryController)

在此處輸入圖片說明

沒錯,庫的設計不是很好...

在這里,新鮮出爐: https : //cocoapods.org/pods/CameraRoll

我將添加一個自述文件並對其進行改進,但是效果很好。

首先,將此添加到您的plist

<key>NSPhotoLibraryUsageDescription</key>
<string>To Find images</string>

然后導入

import CameraRoll
import Photos

然后,當您要使用它時,

   let cr = CameraRoll()
    // For pitures use .Image mode
    cr.present(in: self, mode: .Video) { (assets) in
        // Returns array of PHAsset
        }
    }

使用輔助函數進行轉換

    let cr = CameraRoll()
    cr.present(in: self, mode: .Image) { (assets) in
        if let assets = assets, let first = assets.first {
            DispatchQueue.main.async {
                AssetManager.sharedInstance.getImageFromAsset(phAsset: first) { (image) in
                    self.imageView.image = image
                }
            }
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM