Почему размер изображения увеличивается после представления UIImagePNGR?

У меня есть файл изображения в приложении фотографий iphone.

Я взял его в свой MacBook, через Airdrop и проверил размер изображения = 1,9 МБ

Я сохранил то же изображение в приложении "Файлы" на iphone и проверил размер изображения там = 1,9 МБ

Я взял то же изображение в свое приложение черезUIImagePickerController,

  • Используемый UIImagePNGRepresentation и распечатал количество данных / число байтов = 15,8 МБ
  • Используемый UIImageJPEGRepresentation с коэффициентами сжатия 1.0 и распечатанными данными / счетчиками байт = 5,4 МБ
  • Используемый UIImagePNGRepresentation и сохранил его в локальном (DocumentsDirectory) и проверил размер файла = 15,8 МБ
  • Используемый UIImageJPEGRepresentation с обжатием 1.0 и сохранил его в локальном (DocumentsDirectory) и проверил размер файла = 5,4 МБ

Теперь мой вопрос заключается в том, почему UIImagePNGRepresentation ИЛИ ЖЕ UIImageJPEGRepresentation увеличивает размер файла до такого большого размера? Я даже загрузил это изображение на свой сервер и, очевидно, получал изображения большего размера. Я хотел загрузить данное изображение на свой сервер с оригинальным качеством, но я не хочу, чтобы это изображение большого размера (поскольку его фактический размер на устройстве совершенно другой), есть ли другой способ, с помощью которого мы можем предотвратить размер и качество исходного изображения и то и другое?.

1 ответ

Давайте возьмем этот пример из сессии WWDC 2018 - 416_ios_memory_deep_dive. Если размер файла 590 КБ, размер изображения составляет 2048 пикселей x 1536 пикселей. Таким образом, общая память этого изображения составляет 10 МБ (2048 пикселей x 1536 пикселей x 4 байта на пиксель). Для получения дополнительной информации вы можете посмотреть это видео. https://developer.apple.com/videos/play/wwdc2018/416/