2017-06-26 11 views
0

ファイルURL( "file:///var/mobile/Media/DCIM/100APPLE/IMG_0056.JPG")を使用して画像を取得しようとしていますが、this methodは素晴らしいですがそれをより良くする方法はありませんか?私のイメージを検索するのに時間がかかるからです。画像を直接ファイルURLに添付

私はこの方法では、URLを直接画像を取得しようとしている:

if let url = URL(string: self.path) { 
     print(url) (print = file:///var/mobile/Media/DCIM/100APPLE/IMG_0056.JPG) 
     do { 
      let data = try Data(contentsOf: url) 
      print(data) 
      let image2 = UIImage(data: data as Data) 
      return image2 
     } catch { 
      print(error.localizedDescription) 
      // (print = Impossible d’ouvrir le fichier « IMG_0056.JPG » car vous ne disposez pas de l’autorisation nécessaire pour l’afficher.) 
      // Traduction : Unable to open file "IMG_0056.JPG" because you do not have permission to view it. 
     } 
    } 

    return nil 

は、どのように私は直接このイメージへのアクセスを得ることができますか?

答えて

0

私はついにそれを早くする方法を見つけました。私が見つけた唯一の方法は、自分のオブジェクトにPHAssetオブジェクトのlocalIdentifierを格納することです。

は今、私の方法は次のようになります。

func PHAssetForFileURL(url: NSURL) -> PHAsset? { 
    let imageRequestOptions = PHImageRequestOptions() 
    imageRequestOptions.version = .current 
    imageRequestOptions.deliveryMode = .fastFormat 
    imageRequestOptions.resizeMode = .fast 
    imageRequestOptions.isSynchronous = true 

    let options = PHFetchOptions() 
    options.predicate = NSPredicate(format: "localIdentifier == %@", self.localIdentifier) 

    let fetchResult = PHAsset.fetchAssets(with: options) 
    for index in 0 ..< fetchResult.count { 
     let asset = fetchResult[index] as PHAsset 
     var found = false 
     PHImageManager.default().requestImageData(for: asset, options: imageRequestOptions) { (_, _, _, info) in 
      if let urlkey = info?["PHImageFileURLKey"] as? NSURL { 
       if urlkey.absoluteString! == url.absoluteString! { 
        found = true 
       } 
      } 
     } 
     if (found) { 
      return asset 

     } 
    } 

    return nil 
} 
関連する問題