Перейти к содержимому
pdftools.kz

Формат JPEG 2000

JPEG 2000 разложил изображение не на квадраты, а на волны разного масштаба, и от этого исчез главный дефект обычного JPEG: пережатая картинка не рассыпается на плитки, а мягко мылится. Один и тот же кодек умеет и с потерями, и без них, поддерживает альфа-канал и позволяет читать файл частично — сначала грубую версию, потом детали. В вебе формат не прижился, зато в PDF для него есть свой фильтр.

Локально в браузеребез регистрации

Коротко о цифрах

Стандарт
ISO/IEC 15444, преобразование вейвлетами вместо блоков 8×8
Режимы
с потерями и без потерь в одном кодеке, поддерживается альфа-канал
Фильтр в PDF
JPXDecode — изображение хранится в документе как есть
Декодер на сайте
wasm-модуль на 252 032 байта, лежит рядом с воркером рендеринга
Условие работы
без разрешения на wasm в script-src движок падает на медленный путь

Чем вейвлет отличается от блоков

Обычный JPEG режет кадр на независимые квадраты 8×8, и при сильном сжатии границы между ними становятся видны — это и есть та самая плиточная сетка. JPEG 2000 работает со всем изображением сразу, раскладывая его на уровни детализации: сначала общий контур, затем всё более мелкие подробности. Убирая верхние уровни, кодировщик снижает резкость, но не создаёт новых границ.

Оттуда же прогрессивность: можно прочитать первые проценты файла и получить всё изображение целиком, только менее чётким. Для просмотра гигантских карт и архивных сканов это ценнее, чем экономия байтов. И один кодек покрывает оба режима — можно сжать без потерь для архива и с потерями для копии, не меняя формат.

Где вы его встретите

  • Внутри PDF: в спецификации есть фильтр JPXDecode, поэтому изображение может храниться в документе прямо в этом формате.
  • В цифровом кино: пакеты для кинопроекторов собираются именно на JPEG 2000.
  • В архивах и медицинских системах, где нужен один формат и для точной копии, и для просмотровой.
  • В вебе — практически нигде: массовой поддержки в браузерах формат так и не получил, его место заняли WebP и AVIF.

Почему у нас страницы с JPEG 2000 всё-таки рисуются

Наши клиентские инструменты не полагаются на браузер в вопросе картинок внутри PDF: движок рендеринга несёт собственный декодер JPEG 2000, скомпилированный в wasm. Он лежит в статике рядом с воркером и занимает 252 032 байта. Поэтому скан, сохранённый в JPXDecode, у нас откроется, отрисуется и превратится в JPG или PNG так же, как обычная страница.

Есть условие. В политике безопасности сайта в директиве script-src обязана стоять разрешающая запись для wasm — без неё браузер откажется компилировать модуль, и движок переключится на запасной путь на обычном JavaScript. Картинка появится, но заметно медленнее. Ровно по той же причине в списке лежат ещё два модуля: декодер двухцветных сканов на 104 852 байта и модуль управления цветом на 96 589 байт, который отвечает за корректный вывод CMYK.

Загрузить отдельный файл .jp2 в наши инструменты нельзя: браузер такие картинки не декодирует, а наши дропзоны принимают только то, что он отдаёт готовой пиксельной сеткой.

Частые вопросы

Почему браузер не открывает файл .jp2, а PDF с такой картинкой показывает?

Потому что страницу рисует не браузер, а движок рендеринга со своим декодером в wasm. Для отдельного файла этот путь не задействован, и открыть его напрямую не получается.

JPEG 2000 лучше обычного JPEG?

По качеству при сильном сжатии — да, изображение мылится вместо распада на квадраты. Но кодирование дороже, а поддержка редкая, поэтому вне архивов и кино формат почти не используют.

Чем открыть файл .jp2 на компьютере?

Понадобится программа с поддержкой этого формата: графический редактор, просмотрщик научных изображений или конвертер. Штатные средства систем и браузеры такие файлы обычно не читают.

Как превратить JPEG 2000 в обычную картинку?

Если файл лежит внутри PDF, просто выгрузите страницы в JPG или PNG нашим конвертером — декодирование произойдёт по дороге. Отдельный .jp2 придётся сначала пересохранить сторонней программой.

Рядом