# 39.12. `jpeg` --- JPEG ファイルの読み書きを行う

バージョン 2.6 で非推奨: `jpeg` モジュールは Python 3 で削除されました。

この `jpeg` モジュールは Independent JPEG Group (IJG) によって書かれた JEPG 圧縮及び展開アルゴリズムを提供します。 JPEG 形式は写真等の画像圧縮で標準的に利用され、ISO 10918で定義されています。 JPEG、あるいは Independent JPEG Group ソフトウェアの詳細は、標準 JPEG、もしくは提供されるソフトウェアのドキュメントを参照してください。

JPEG ファイルを扱うポータブルなインタフェースは Fredrik Lundh による Python Imaging Library (PIL) があります。PIL の情報は http://www.pythonware.com/products/pil/ で見つけることができます。

モジュール `jpeg` では、一つの例外といくつかの関数を定義しています。

exception `jpeg.``error`

  関数 `compress()` または `decompress()` のエラーで上げられる例外です。

`jpeg.``compress`(data, w, h, b)

  データを、ピクセルマップが幅 w 、高さ h 、1 ピクセルあたりのバイト数 b として扱います。データは SGI GL 順になっていて、最初のピクセルは左下端になります。また、これは `gl.lrectread()` が返す値をすぐに `compress()` にかけるためです。現在は、1 バイトもしくは 4 バイトのピクセルを取り扱うことができます。前者はグレースケール、後者は RGB カラーを扱います。 `compress()` は、圧縮された JFIF 形式のイメージが含まれた文字列を返します。

`jpeg.``decompress`(data)

  データは圧縮された JFIF 形式のイメージが含まれた文字列で、この関数はタプル `(data, width, height, bytesperpixel)` を返します。このデータも圧縮でのそれ同様に `gl.lrectwrite()` に渡すのに適したものです。

`jpeg.``setoption`(name, value)

  `compress()` と `decompress()` を呼ぶための様々なオプションをセットします。次のオプションが利用できます:

  オプション | 効果
  --- | ---
  `'forcegray'` | 入力が RGB でも強制的にグレースケールを出力します。
  `'quality'` | 圧縮後イメージの品質を `0` から `100` の間の値で指定します (デフォルトは `75` です)。これは圧縮にのみ影響します。
  `'optimize'` | ハフマンテーブルを最適化します。時間がかかりますが、高圧縮になります。これは圧縮にのみ影響します。
  `'smooth'` | 圧縮されていないイメージ上でインターブロックスムーシングを行います。低品質イメージに役立ちます。これは展開にのみ影響します。

参考

JPEG Still Image Data Compression Standard
  Pennebaker と Mitchell による、 JPEG 画像フォーマットの正統的な参考文献。
Information Technology - Digital Compression and Coding of Continuous-tone Still Images - Requirements and Guidelines
  JPEG の ISO 標準は ITU T.81 としても発行されています。これは PDF 形式でオンラインから取得できます。