Поддержка формата изображений JPEG2000

Обзор

HotPDF обеспечивает всестороннюю поддержку форматов изображений JPEG2000, включая файлы JP2 и J2K. JPEG2000 — стандарт сжатия изображений на основе вейвлетов, дающий более высокую эффективность сжатия и качество по сравнению с традиционным JPEG

Поддерживаемые форматы

  • JP2: формат JPEG2000 Part 1 с полной файловой структурой
  • J2K: формат кодового потока JPEG2000 (сырые сжатые данные)

Ключевые возможности

  • Автоматическое определение формата и соответствующая обработка
  • Поддержка сжатия как без потерь, так и с потерями
  • Поддержка многоканальных изображений (RGB, RGBA, Grayscale)
  • Расширенная поддержка битовой глубины (8, 12, 16 бит на компоненту)
  • Прямое валидированное декодирование codestream-тайлов с метаданными сетки тайлов
  • Совместное декодирование области источника и разрешения-интереса со степенью двойки
  • Бюджеты декодированного вывода для враждебных или неожиданно больших кодовых потоков
  • Автоматический выбор разрешения рендерера по видимым целевым пикселям
  • Ограниченная параллельная сборка независимых пересекающихся тайлов
  • Детерминированная композиция, отмена, лимиты воркеров и телеметрия пиковой памяти

Пример использования


// Delphi example - Adding JPEG2000 image to PDF
procedure AddJPEG2000Image;
var
  PDF: THotPDF;
begin
  PDF := THotPDF.Create(nil);
  try
    PDF.FileName := 'output.pdf';
    PDF.BeginDoc;
    PDF.AddPage;

    // Add JPEG2000 image - format is automatically detected
    PDF.AddImage('sample.jp2', 100, 100, 200, 150);

    // J2K codestream format is also supported
    PDF.AddImage('sample.j2k', 100, 300, 200, 150);

    PDF.EndDoc;
  finally
    PDF.Free;
  end;
end;
        

Техническая реализация

Поддержка JPEG2000 реализована в модуле HPDFJpeg2000.pas, который предоставляет:

  • THPDFJpeg2000Decoder: Основной класс декодера для обработки изображений JPEG2000
  • Определение формата: Автоматическое распознавание форматов JP2, J2K и JPT
  • Инспекция заголовка: InspectHeaderFromByteArray читает размеры, компоненты и SourceColorSpace без декодирования пиксельных сэмплов
  • Потоковая обработка: Поддержка загрузки изображений как из файлов, так и из потоков
  • Доступ к тайлам: LoadTileFromByteArray декодирует один валидированный тайл и сообщает его смещение в источнике и координаты сетки
  • Выбор разрешения: LoadRegionFromByteArray совмещает прямоугольник источника с коэффициентом вейвлет-редукции
  • Параллельное декодирование тайлов: LoadRegionFromByteArrayParallel использует независимые экземпляры декодера и детерминированную композицию по строкам
  • Загруженные PDF: DecodeLoadedImageRegionAtResolution выбирает уровень, при котором ни одна целевая размерность не недоразрешается
  • Управление операциями: JPEG2000ParallelTileDecoding и JPEG2000TileWorkerLimit управляют интеграцией с рендерером, а GetLastJPEG2000ParallelDecodeStats сообщает оценки планирования и бюджета
  • Интеграция OpenJPEG: Нативное линкуемое декодирование на Win32 и Win64

Преимущества производительности

  • Более высокие коэффициенты сжатия, чем у традиционного JPEG
  • Нет блочных артефактов при высоких степенях сжатия
  • Прогрессивная передача и просмотр
  • Поддержка кодирования области интереса (ROI)
  • Конкурентная сборка, когда видимая область пересекает независимые тайлы кодового потока
  • Опция сжатия без потерь

Совместимость

Поддержка JPEG2000 доступна и в 32-битной, и в 64-битной версиях HotPDF и совместима со всеми поддерживаемыми версиями Delphi и C++ Builder

См. также