Нещодавно 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 → Лептон → JPEG → ...
Оцінка балів
Розмір байтів зображення Лептона, розділений на вихідне зображення JPEG. Чим вища (гірша компресія Лептона), тим краще. Запустіть Лептон за допомогою стандартних прапорів та перемикачів.
Отримання Лептона
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
слід розповісти вам речі.