2017-04-13 50 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,而不是从照片库中检索图像。

相关问题