0

UIImagePickerController Cameraを撮った画像の場所を取得する方法を複数試みました。私が達成したい何UIImagePickerControllerから画像の位置を取得

は私がUIImagePickerControllerCameraを使用して画像を選択したい、ということであると私はそれだけで、私はそれからPHAssetともそれに関連する場所を取り戻すことができPhoto Libraryにそれを保存する必要があります。

//MARK: Saving an Image to PhotoLibrary and taking back the PHAsset 

    class func savingThis(image : UIImage, completion : (asset : PHAsset?) ->()) 
    { 
     var localIdentifier : String? 
     let imageManager = PHPhotoLibrary.sharedPhotoLibrary() 

     imageManager.performChanges({() -> Void in 

      let request = PHAssetChangeRequest.creationRequestForAssetFromImage(image) 

      if let properAsset = request.placeholderForCreatedAsset { 
       localIdentifier = properAsset.localIdentifier 
      } 
      else { 
       completion(asset: nil) 
      } 

      }, completionHandler: { (success, error) -> Void in 

       if let properLocalIdentifier = localIdentifier { 

        let result = PHAsset.fetchAssetsWithLocalIdentifiers([properLocalIdentifier], options: nil) 
        if result.count > 0 { 
         completion(asset: result[0] as? PHAsset) 
        } 
        else { 
         completion(asset: nil) 
        } 
       } 
       else { 
        completion(asset: nil) 
       } 
     }) 
    } 

PHAssetを保存して戻すためにこのコードを試しました。しかし、問題は、このPHAssetには、それに関連する場所が何もないという理由がありますか?そして私が見逃したことは?

GPSのデータを画像のメタデータに手動で設定する必要はありません。私はPhotos FrameworkまたはAsset Libraryがそれを処理すると思います。だから、Asset Libraryは廃止されましたが、私たちの唯一の選択肢はPhotos Frameworkです。オンラインで読むと、Photo Libraryに画像を保存することができます。正しいのではないですか?

代替手段はありますか?画像をCamera Rollに保存するには、UIImageWriteToSavedPhotosAlbumメソッドを使用する必要があります。Photos Frameworkを使用して、最近の写真を取り戻すことができます。しかし、私はUIImageWriteToSavedPhotosAlbumが場所物を世話するとは思わない。

あなたは考えがありますか?

+0

画像のパスを取得しようとしていますか? –

+0

私はUIImagePickerControllerのソースタイプとしてCameraを設定して、新しい写真を撮るためにUIImagePickerControllerを使用しています。画像を選択した後、画像をフォトライブラリに保存し、PHAssetとして取り戻します。 PHAssetには関連付けられた場所がありません.PHAssetを使用して場所を欲しいです。 –

答えて

2

まず、すべての親切にすべての人に質問をしていただき、ありがとうございました。

私の答えが見つかりました。

//MARK: Saving an Image to PhotoLibrary and taking back the PHAsset 

    class func savingThis(image : UIImage, completion : (asset : PHAsset?) ->()) 
    { 
     var localIdentifier : String? 
     let imageManager = PHPhotoLibrary.sharedPhotoLibrary() 

     imageManager.performChanges({() -> Void in 

      let request = PHAssetChangeRequest.creationRequestForAssetFromImage(image) 

      request.location = // Assigned current location here :) 

      if let properAsset = request.placeholderForCreatedAsset { 
       localIdentifier = properAsset.localIdentifier 
      } 
      else { 
       completion(asset: nil) 
      } 

      }, completionHandler: { (success, error) -> Void in 

       if let properLocalIdentifier = localIdentifier { 

        let result = PHAsset.fetchAssetsWithLocalIdentifiers([properLocalIdentifier], options: nil) 

        if result.count > 0 { 
         completion(asset: let asset = result[0] as? PHAsset) 
        } 
        else { 
         completion(asset: nil) 
        } 
       } 
       else { 
        completion(asset: nil) 
       } 
     }) 
    } 
関連する問題