libjpegは、JPEGのエンコード、デコードを行うためのライブラリである。JPEGファイルを操作するためのユーティリティも含んでいる。開発はIndependent JPEG Groupで、「IJG JPEG ライブラリ」とも呼ばれる。

派生として、SIMD命令(MMX、SSE2、AVX2、NEON、AltiVec)に対応することで高速描画を可能にしたlibjpeg-turboが存在する。

概要

libjpegはC言語で記述されたライブラリで、JPEGデコーダ、JPEGエンコーダ、その他JPEGユーティリティの広く使われている実装を含んでいる。 このライブラリはIndependent JPEG Groupによって保守されている。

エンコード、デコードにおいて負荷が高いDCTの演算では、浮動小数点演算、精度の高い整数演算、高速な整数演算の三通りが実装されており、用途によって選択できる。後者ほど演算誤差が大きい代わり、高速になる。

量子化テーブルはあらかじめプリセットもされており、1つのパラメータだけで画質と圧縮率のバランスを変更できる。プログラマによる量子化テーブルの定義も可能である。

ユーティリティ

libjpegは以下のユーティリティプログラムを含んでいる。

  • cjpegdjpeg - JPEGと、他の一般的な画像フォーマットとの変換を行う。
  • rdjpgcomwrjpgcom - JFIFファイル内にあるテキストの読み書きを行う。
  • jpegtran - JPEGファイルに対し、以下のような変換を行う。
    • ハフマン符号化テーブルの最適化による圧縮率向上。
    • プログレッシブ形式と非プログレッシブ形式の変換。
    • 一部のアプリケーションが付加する、非標準の固有データの削除。
    • 画像のグレースケール化
    • 反転、回転(90度単位)
    • クロッピング(切り取り)

jpegtranによる操作は、画像の劣化は発生しない(データの伸張と再圧縮をともなわず、そのためジェネレーションロスによる劣化が起きない)。

jpegtranのユーザインタフェースとなる、JpegcropというWindowsアプリケーションが存在する。

関連項目

  • JPEG
  • 画像編集

外部リンク

  • 公式サイト
  • Additional features for libjpeg

Libjpeg Alchetron, The Free Social Encyclopedia

Windows编译libjpeg库 Qt君

JPG vs. JPEG Das ist der Unterschied TECHBOOK

JPEG oder JPG? Was ist der Unterschied? Erklärung mit Beispiel

Images of Libjpeg JapaneseClass.jp