2017-04-13 86 views
0

我使用ALAssetsLibrary將圖像保存到photolibrary中,並打印出圖像文件的url。我注意到照片以IMG _ ####。jpg格式保存到ios設備,其中####是一些數字。我想獲取我剛剛保存的圖像的文件名。無論如何,從URL獲取這個IMG _ ####。jpg文件名?你可以從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) 

在這個環節的評論有一個人正好做我想,但是我不是太熟悉目標C和不使用imagePickerController什麼。如果有人可以向我解釋如何在沒有imagePickerController的情況下在Swift中做到這一點,那將是非常棒的。

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

+0

「圖像的文件名」你甚至在說什麼文件名?圖像不是文件 - 它是圖像。你知道如何去到這個形象;它將作爲數據存儲在您自己提供的此資產URL的文件中。那究竟是什麼問題呢?進一步的信息(即'IMG _ ####。jpg')甚至不會有用,因爲你不能用它來訪問圖像。 – matt

+0

當我連接我的iphone到我的電腦時,我在IMG _ ####。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

重要的一點是,使用在資產網址提供的圖像的名字,你不能做任何事情。

您必須存儲asset-url,而不是從照片庫中檢索圖像。

相關問題