【问题标题】:iOS Swift 4: Get Image Format (JPG,PNG,GIF) From didFinishPickingMediaWithInfoiOS Swift 4:从 didFinishPickingMediaWithInfo 获取图像格式(JPG、PNG、GIF)
【发布时间】:2017-12-26 18:06:30
【问题描述】:

我正在构建一个应用程序,允许您将图像从您的库上传到服务器。该服务器本质上用作图像存储库。因此,绝对有必要将其存储为原始图像格式:JPG、PNG 或 GIF。 IE。如果 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 对象做什么......

【问题讨论】:

  • iOS11可以使用原图url键UIImagePickerControllerImageURL

标签: ios swift swift4


【解决方案1】:

在iOS11中可以使用原图url键UIImagePickerControllerImageURL,使用URLresourceValues方法获取其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
}

您可以使用answer 中的typeIdentifier 扩展来找出文件URL 类型标识符:

extension URL {
    var typeIdentifier: String? {
        return (try? resourceValues(forKeys: [.typeIdentifierKey]))?.typeIdentifier
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 2012-11-19
    • 1970-01-01
    相关资源
    最近更新 更多