发现了一个非常奇怪和令人不安的问题。尝试从相机胶卷中打开大于标准iPhone相机分辨率(4032x3024)的图像。
我有很多示例,但其中有两个:
使用我的代码,我既可以直接使用UIImage类型打开,也可以尝试使用纯数据格式,这证明了我的观点,即数据输出已经减少了! Nok.jpg文件的大小和分辨率较小,减少它没有任何意义,因为它可以成功打开较大的文件!为什么会这样以及如何解决?
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
dismiss(animated: true, completion: {
let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage
let url = info[UIImagePickerController.InfoKey.imageURL] as? URL
do {
let data = try Data(contentsOf: url!)
print(data.count)
let imageFromURL = UIImage(data: data)
print("image size from URL:", imageFromURL!.size)
} catch { print (error) }
print("image size direct:", image!.size)
}
}
// actual output:
// ok.jpg:
// 7329635
// image size from URL: (5184.0, 3456.0)
// image size direct: (5184.0, 3456.0)
// nok.jpg:
// 975328
// image size from URL: (2048.0, 1536.0)
// image size direct: (2048.0, 1536.0)