2017-04-13 11 views
0

ALAssetsLibrary를 사용하여 사진 라이브러리에 이미지를 저장하고 이미지 파일의 URL을 출력하고 있습니다. IMG_ ####. jpg 형식으로 사진이 ios 기기에 저장되는 것을 확인했습니다. ####은 숫자입니다. 방금 저장 한 이미지의 파일 이름을 얻고 싶습니다. 어쨌든이 IMG _ ####. jpg 파일 이름을 URL에서 가져 오시겠습니까? 나는 그러나 내가 객관적 C와 너무 잘 알고 아니에요 및 imagePickerController를 사용하지 원하는 것을 정확하게 일을 누군가가이 링크의 의견에IOS의 assetURL에서 이미지 파일 이름을 가져올 수 있습니까?

assetLib.writeImage(toSavedPhotosAlbum: imageToSave.cgImage, orientation: ALAssetOrientation(rawValue: imageToSave.imageOrientation.rawValue)!, completionBlock: {(url,error) -> Void in 
      print("image url: \(url)") 

출력

image url: Optional(assets-library://asset/asset.JPG?id=56963951-1CE3-4A1A-B693-804899C79BA5&ext=JPG) 

. 만약 누군가 나를 swift에서 imagePickerController없이이 일을하는 방법을 설명 할 수 있다면 정말 좋을 것입니다.

http://ootips.org/yonat/how-to-set-the-image-name-when-saving-to-the-camera-roll/

+0

"이미지 파일 이름"어떤 파일 이름에 대해 이야기하고 있습니까? 이미지는 파일이 아니며 이미지입니다. 그리고 당신은이 이미지를 얻는 방법을 압니다. 사용자가 지정한이 자산 URL의 파일에 데이터로 저장됩니다. 문제가 정확히 무엇입니까? 추가 정보 (즉, 'IMG _ ####. jpg')는 이미지에 액세스 할 때 사용할 수 없으므로 유용하지 않습니다. – matt

+0

내 아이폰을 PC에 연결하면 IMIM_ ####. jpg 형식의 DCIM 폴더에 이미지가 표시됩니다. 사진 라이브러리에 이미지를 저장할 때 이미지 파일 이름을 가져 오려고합니다. – bakalolo

+0

하지만 왜? 당신은 그것을 설명하지 않았습니다. "I"라는 단어를 두 가지 용도로 구분합니다. 전화기를 컴퓨터에 연결하는 "나"는 인간입니다. 그러나 프로그램을 대표하는 "나"는 그 이름을 결코 볼 수 없으며 아무 것도 사용할 수 없기 때문에 프로그램이 그것을 알고 싶어하는 이유는 무엇입니까? – matt

답변

0

다른 사람이 똑같이하는 것에 관심이 있다면 알아 냈습니다. 질문에 게시 한 링크의 크레딧 저는 Swift로 번역했습니다.

let assetLib = ALAssetsLibrary() 
    //Save image get access to the url in completion handler  
    assetLib.writeImage(toSavedPhotosAlbum: imageToSave.cgImage, orientation: ALAssetOrientation(rawValue: imageToSave.imageOrientation.rawValue)!, completionBlock: {(url,error) -> Void in 
         let phAsset = PHAsset.fetchAssets(withALAssetURLs: [url!], options: nil) 
         let lastPhAsset = phAsset.lastObject 
         let asset = assetLib.asset(for: url, resultBlock: {(asset) -> Void in 
          //print("Asset Success!") 
          let imageRequestOptions = PHImageRequestOptions() 
          imageRequestOptions.isSynchronous = true 
          PHImageManager.default().requestImageData(for: lastPhAsset!, options: imageRequestOptions, resultHandler: { 
           (data,string,orientation,diction) -> Void in 


           let filename = diction![AnyHashable("PHImageFileURLKey")]! 
           // You should have the correct filename here. 
           //print("Filename = \(filename)") 
          }) 

         }, failureBlock: {(error) -> Void in 
          print("Failed to retrieve a asset from url.") 
          return 
         }) 


    }) 
0

중요한 점은 자산의 URL에 표시되는 이미지의 이름을 사용하여 아무것도 할 수 없다.

대신 사진 라이브러리에서 이미지를 검색하려면 asset-url을 저장해야합니다.