你能从 IOS 中的 assetURL 获取图像文件名吗?
Can you get image file name from assetURL in IOS?
我正在使用 ALAssetsLibrary 将图像保存到照片库并打印出图像文件的 url。我注意到照片以 IMG_####.jpg 格式保存到 ios 设备,其中 #### 是一些数字。我想获取刚刚保存的图像的文件名。无论如何要从 url?
中获取此 IMG_####.jpg 文件名
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)
在这个 link 的评论中有人在做我想要的,但是我不太熟悉 objective C 并且不使用 imagePickerController。如果有人可以向我解释如何在没有 imagePickerController 的 Swift 中执行此操作,那就太棒了。
http://ootips.org/yonat/how-to-set-the-image-name-when-saving-to-the-camera-roll/
重要的一点是,您不能使用资产 url 中显示的图像名称做任何事情。
您必须存储 asset-url
而不是从照片库中检索图像。
我想知道是否还有其他人有兴趣做同样的事情。感谢我在问题中发布的 link 我刚刚将其翻译为 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
})
})
我正在使用 ALAssetsLibrary 将图像保存到照片库并打印出图像文件的 url。我注意到照片以 IMG_####.jpg 格式保存到 ios 设备,其中 #### 是一些数字。我想获取刚刚保存的图像的文件名。无论如何要从 url?
中获取此 IMG_####.jpg 文件名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)
在这个 link 的评论中有人在做我想要的,但是我不太熟悉 objective C 并且不使用 imagePickerController。如果有人可以向我解释如何在没有 imagePickerController 的 Swift 中执行此操作,那就太棒了。
http://ootips.org/yonat/how-to-set-the-image-name-when-saving-to-the-camera-roll/
重要的一点是,您不能使用资产 url 中显示的图像名称做任何事情。
您必须存储 asset-url
而不是从照片库中检索图像。
我想知道是否还有其他人有兴趣做同样的事情。感谢我在问题中发布的 link 我刚刚将其翻译为 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
})
})