Я использую 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 кажется бессмысленным, но это самый простой способ воспроизвести проблему, которая затрагивает более широкую систему.
Любые идеи о том, почему происходит такое увеличение размера файла, очень ценятся. Спасибо.