我没有从照片库中获取图像名称。这里的任何人都知道获取图像名称的正确方法吗?
注意:PHAsset.fetchAssets(withALAssetURLs: [imageURL], options: nil)
这是不推荐使用的。
只有斯威夫特
谢谢
我找到了一个方法
if let asset = info["UIImagePickerControllerPHAsset"] as? PHAsset{
if let fileName = asset.value(forKey: "filename") as? String{
print(fileName)
}
}
这将返回照片库中的实际文件名。
你的意思是图像文件名?如果是这样,这应该对你有帮助。在你的UIImagePickerControllerDelegate中:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
guard let fileUrl = info[UIImagePickerControllerImageURL] as? URL else { return }
print(fileUrl.lastPathComponent)
}
尝试使用以下代码
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let asset = info[UIImagePickerControllerPHAsset] as? PHAsset {
if let fileName = (asset.value(forKey: "filename")) as? String {
print(\(fileName))
}
}
// Other Stuff
}
如果您没有授予访问照片库的权限,UIImagePickerControllerPHAsset
就是nil
。操作系统不会自动询问,仍然会让你访问该文件(我不知道这背后的逻辑是什么!)但是PHAsset是信息词典将是零!
适用于iOS 12的更新,Swift 4,
这将直接为您提供文件名和文件扩展名
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
guard let fileUrl = info[UIImagePickerController.InfoKey.imageURL] as? URL else { return }
print(fileUrl.lastPathComponent) // get file Name
print(fileUrl.pathExtension) // get file extension
dismiss(animated: true, completion: nil)
}
请试试这个。
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let asset = info[UIImagePickerControllerPHAsset] as? PHAsset {
let assetResources = PHAssetResource.assetResources(for: asset)
print(assetResources.first!.originalFilename)
}
dismiss(animated: true, completion: nil)
}