iOS Swift 4:从didFinishPickingMediaWithInfo中获取图片格式(JPG,PNG,GIF)

4
我正在开发一个应用程序,允许您从库中上传图像到服务器。这个服务器被用作图像存储库。因此,将其存储在原始图像格式中是绝对必要的:JPG、PNG或GIF。例如,如果PNG图像具有透明度,则必须保留,不能简单地转换为JPG。
我曾经使用UIImagePickerControllerReferenceURL来获取图像格式:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        let selectedImage = info[UIImagePickerControllerEditedImage] as! UIImage
        let assetPath = info[UIImagePickerControllerReferenceURL] as! NSURL

        if (assetPath.absoluteString?.hasSuffix("JPG"))! {
            print("JPG")
        }
        else if (assetPath.absoluteString?.hasSuffix("PNG"))! {
            print("PNG")
        }
        else if (assetPath.absoluteString?.hasSuffix("GIF"))! {
            print("GIF")
        }
        else {
            print("Unknown")
        }

        self.dismiss(animated: true, completion: nil)

        self.showImageFieldModal(selectedImage: selectedImage)
    }

但UIImagePickerControllerReferenceURL已在iOS11中弃用。它建议使用UIImagePickerControllerPHAsset,但它不是一个URL。作为PHAsset对象,我不确定我应该怎么做...


1
在iOS11中,您可以使用原始图像URL键UIImagePickerControllerImageURL - Leo Dabus
1个回答

8
在iOS11中,您可以使用原始图像URL键UIImagePickerControllerImageURL并使用URL resourceValues方法来获取其typeIdentifierKey
if #available(iOS 11.0, *) {
    if let imageURL = info[UIImagePickerControllerImageURL] as? URL {
        print(imageURL.typeIdentifier ?? "unknown UTI")  // this will print public.jpeg or another file UTI
    }
} else {
        // Fallback on earlier versions
}

您可以使用这个答案中给出的typeIdentifier扩展来查找fileURL类型标识符:
extension URL {
    var typeIdentifier: String? {
        return (try? resourceValues(forKeys: [.typeIdentifierKey]))?.typeIdentifier
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接