Почему создание UIImage из JPEG, а затем экспорт в JPEG приводит к тому, что файл во много раз превосходит оригинал? - PullRequest
1 голос
/ 11 апреля 2020

Я использую XCode версии 11.3.1 и Swift 4.2.

У меня есть файл JPEG в моих Assets.xcassets в XCode. Это 189 КБ.

В Swift я загружаю его в UIImage примерно так:

let testImage = UIImage(named: "testImage")

Позже я экспортирую этот UIImage обратно в данные JPEG:

let imageData = testImage.jpegData(compressionQuality: 1.0)
print(imageData.count)

Вывод:

792385

Я ожидаю, что compressionQuality, равный 1,0, сделает результирующий JPEG такого же размера, как и оригинал. Вместо этого он увеличил его до 792 КБ. Полученное изображение выглядит как совершенно корректный файл JPEG, в котором нигде не добавлено ни одного пустого пространства или чего-либо подобного.

При установке значения compressionQuality на 0,45 я получаю JPEG, размер которого примерно соответствует размеру оригинала. Хотя я не понимаю, зачем мне вообще нужно сжимать, чтобы вернуться к исходному размеру.

Я понимаю, что преобразование локального JPEG в UIImage и затем обратно в JPEG кажется бессмысленным, но это самый простой способ воспроизвести проблему, которая затрагивает более широкую систему.

Любые идеи о том, почему происходит такое увеличение размера файла, очень ценятся. Спасибо.

...