Разработка & Кодинг Jul 18, 2026В закладки

Любитель опубликовал обратное исследование кодека JPEG: генерация изображений, которые при декодировании создают преднамеренные артефакты, манипулируя квантованием DCT. Интересно, поучительно и отличное упражнение для понимания формата.
На главной странице Hacker News на этой неделе статья под названием « Regressive JPEGs » (maurycyz.com/projects/bad_jpeg/) привлекла наше внимание. Её автор документирует обратное исследование кодека JPEG: вместо оптимизации изображения по размеру и качеству, он генерирует специально деградированные JPEG, манипулируя таблицами квантования и блоками DCT (Discrete Cosine Transform).
Это не инструмент для продакшена, а отличный предлог, чтобы понять, как JPEG работает изнутри — формат, который большинство разработчиков используют, даже не читая спецификацию.
JPEG (Joint Photographic Experts Group, стандарт ISO/IEC 10918-1 от 1992 года) следует классическому конвейеру:
Качество восприятия зависит в основном от шага 5: чем агрессивнее таблица квантования, тем больше теряется деталей в высоких частотах.
Автор извращает этот механизм. Создавая экзотические таблицы квантования (очень высокие значения на некоторых частотах, аномально низкие — на других), он производит JPEG, которые при чтении стандартным декодером демонстрируют:
Педагогическая ценность очевидна: мы видим невооружённым глазом, какой вклад вносит каждый параметр кодека в сохранение деталей.
Помимо удовольствия от любопытства, есть несколько легитимных применений:
В сухом остатке, такие проекты показывают, что формат, который мы считаем чёрным ящиком, всегда скрывает рычаги для эксплуатации — на благо или ради чистого любопытства.
Оригинальная спецификация JPEG (ITU T.81 / ISO 10918-1) многословна, но читабельна — и это лучший входной пункт, чтобы понять, что именно видит декодер. Со стороны инструментария, libjpeg-turbo (Darrell Commander) позволяет инспектировать таблицы квантования файла через djpeg -verbose — отличный способ проверить, что кодек сохранил в конкретном JPEG.
На заметку: форматы файлов — не чёрные ящики. Чтение спецификации (JPEG, PNG, WebP) превращает любого разработчика в более осведомлённого пользователя инструментов обработки изображений, которые он использует каждый день.
Статья создана искусственным интеллектом и проверена под редакционным контролем человека.