|
Поддержка формата изображений 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
См. также
|