簡體   English   中英

如何在iOS中從手機獲取所有圖像

[英]how to get all images from phone in ios

我想從手機中獲取所有圖像。要在照片庫中創建多個選擇。我正在使用以下代碼從手機中獲取所有圖像。 它工作正常,但是當手機上有1000張圖像時,要花更多時間才能獲取所有圖像並顯示在視圖上。如何減少從手機獲取所有圖像的時間。

 // get all images from photos
    func getAllImagesFromPhotos() -> [Photos]?
    {

        let imgManager = PHImageManager.default()
        let requestOptions = PHImageRequestOptions()
        requestOptions.isSynchronous = true
        let fetchOptions = PHFetchOptions()
        fetchOptions.sortDescriptors = [NSSortDescriptor(key:"creationDate", ascending: true)]

        let fetchResult = PHAsset.fetchAssets(with: PHAssetMediaType.image, options: fetchOptions)

        var allImages = [Photos]()

        for index in 0..<fetchResult.count
        {
            let asset = fetchResult.object(at: index) as PHAsset
            imgManager.requestImage(for: asset, targetSize: CGSize(width:200,height:200), contentMode: .aspectFill, options: requestOptions, resultHandler: { (uiimage, info) in
                if let image = uiimage
                {
                    allImages.append(Photos(image: image, selected: false))
                }
            })
        }

        return allImages
    }

為了解決您的問題,您實際上希望批量加載圖像,一次加載10張圖像,並在用戶滾動多一點時顯示它們,然后加載下一批,等等。

如果加載所有圖像,那么當然會不可避免地降低性能。

您要使用的是UIKit中的UIImagePickerController類

是來自Apple的UIImagePickerController文檔。

如果不想使用UIImagePickerController,則必須一次加載較小的圖像集,並允許用戶通過在選擇視圖上進一步滾動來“加載更多”圖像。

編輯:多圖像選擇

閱讀有關要選擇多個圖像的評論后,很明顯,UIImagePickerController可以選擇單個圖像,但是,您不能在選擇時將其關閉,而當用戶選擇一個圖像時,會顯示一條吐司消息,提示“選擇了圖像” ,而不關閉視圖,允許用戶選擇其他圖像,等等。如果用戶再次選擇同一圖像,則可以再次顯示吐司說“圖像已刪除”,因為您可以驗證是否已選擇該圖像從以前。

如果您不想實施該解決方法,則唯一的選擇是按大約10張圖像的較小塊批量加載圖像,或者按照我在原始答案中的建議進行加載。

但是,如果您真的不想自己實現該功能,我建議您使用3rd party庫,例如ELCImagePickerController之類的東西,還有成百上千個其他庫可以做到這一點。

希望這有幫助,祝你好運

暫無
暫無

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

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