Dropbox недавно выпустил Lepton ( GitHub ), метод, который без потерь сжимает изображения JPEG в обоих направлениях, экономя в среднем 22%.
Из-за принципа «квадратного отверстия» нельзя гарантировать , что любой общий алгоритм сжатия приведет к уменьшению файла ( общий, потому что он не применяется к входным данным, ограниченным определенным форматом). Лептон использует общие характеристики JPEG, которые в случае его искажения могут привести к появлению файла большего размера, чем исходный.
Требования
Напишите программу, которая генерирует:
- Действительное изображение JPEG / JFIF,
- размером от 0,5 МБ до 1 МБ,
- не менее 256 × 256 пикселей,
- не более 4096 × 4096 пикселей,
- распознается Лептоном (он может успешно «сжать»
.lep
изображение) и - распаковывает до идентичного
.jpg
(как вход). APPx
,COM
и другие метаданные, разделы неграфического маркера ограничены в JPEG (введение произвольного количества случайных байтов в изображение для асимптотического подхода к сжатию 1: 1 неэффективно.)APP0
JFIF маркер допускается , но не с миниатюрами не допускается (должно быть ровно 16 байт)- tl; dr Если вы намеренно не помещаете метаданные в сегмент EXIF и отключаете любые миниатюры, которые ваша языковая библиотека хочет добавить в изображение, это должно быть в порядке.
Разместите код и изображение.
Если вы хотите написать программу, которая производит изображение Лептона, которое при преобразовании дает JPEG, соответствующий критериям, это нормально. Он должен оставаться одинаковым для любого количества циклов JPEG → Lepton → JPEG → ....
счет
Размер в байтах изображения Лептона, деленный на исходное изображение JPEG. Чем выше (хуже компрессия Лептона), тем лучше. Запустите Lepton с флагами и переключателями по умолчанию.
Получение Лептона
5-секундный ускоренный курс по сборке Лептона:
git clone https://github.com/dropbox/lepton.git
cd lepton
./autogen.sh && ./configure && make
# fish shell: ./autogen.sh ;and ./configure ;and make
Затем ./lepton --help
должен рассказать вам вещи.