Почему UIImagePickerController теряет размер и качество изображения? - PullRequest
0 голосов
/ 21 января 2019

Нашел очень странную и тревожную проблему.Попытка открыть изображения с камеры, которые превышают стандартное разрешение камеры iPhone (4032x3024).

У меня есть много примеров, но вот два из них:

  1. ok.jpg - 7.3mb, 5184x3456 https://drive.google.com/file/d/1gAtj_rmkHg-HVQSalme1ZkiWkm_vPLjD/view?usp=sharing
  2. nok.jpg - 2.6mb, 4608x3456 https://drive.google.com/file/d/1cgZm955GpdPHm9UMTa8TWXWKKmgw1sML/view?usp=sharing

с моим кодом, я открываю как в прямом типе 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)
...