JPEG2000 Image Format Support

概要

HotPDF は JP2 / J2K ファイルを含む JPEG2000 画像フォーマットを包括的にサポートします。JPEG2000 はウェーブレットベースの画像圧縮規格で、従来の JPEG と比べて高い圧縮効率と品質を提供します

対応フォーマット

  • JP2: 完全なファイル構造を持つ JPEG2000 Part 1 フォーマット
  • J2K: JPEG2000 コードストリームフォーマット(生の圧縮データ)

主な特徴

  • フォーマットの自動判定と適切な処理
  • ロスレス / ロッシーの両圧縮に対応
  • マルチコンポーネント画像のサポート(RGB、RGBA、グレースケール)
  • 高度なビット深度のサポート(コンポーネントあたり 8 / 12 / 16 ビット)
  • タイルグリッドメタデータ付きの検証済みコードストリームタイル直接デコード
  • ソース領域と 2 の冪の注目解像度を組み合わせたデコード
  • 敵対的または予想外に大きなコードストリームに対するデコード出力予算
  • 可視ターゲットピクセルからのレンダラー解像度自動選択
  • 交差する独立タイルの境界付き並列再構成
  • 決定論的な合成、キャンセル、ワーカー上限、ピークメモリのテレメトリ

使用例


// 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 が検証済みの 1 タイルをデコードし、ソースオフセットとグリッドを報告します
  • 解像度選択: LoadRegionFromByteArray がソース矩形とウェーブレット縮小係数を組み合わせます
  • 並列タイルデコード: LoadRegionFromByteArrayParallel が独立したデコーダーインスタンスと決定論的な行優先の合成を使います
  • ロード済み PDF: DecodeLoadedImageRegionAtResolution が、どちらのターゲット次元も過小解像にならないレベルを選択します
  • 操作コントロール: JPEG2000ParallelTileDecoding と JPEG2000TileWorkerLimit がレンダラー統合を制御し、GetLastJPEG2000ParallelDecodeStats がスケジューリングと予算の見積りを報告します
  • OpenJPEG 統合: Win32 / Win64 でのネイティブリンクデコード

性能上の利点

  • 従来の JPEG より良い圧縮率
  • 高圧縮率でもブロックノイズが出ない
  • プログレッシブな転送と表示
  • 関心領域(ROI)符号化のサポート
  • 可視領域が独立したコードストリームタイルにまたがるときの並行再構成
  • ロスレス圧縮オプション

互換性

JPEG2000 サポートは HotPDF の 32 ビット / 64 ビット両方のバージョンで利用でき、サポート対象のすべての Delphi / C++Builder バージョンと互換性があります

関連項目