PHPができることは、HTML出力を生成することだけではありません。PHP は、多くの異なるイメージ形式でイメージファイルを作成したり、操作 したりすることもできます。このイメージ形式には、gif, png, jpg, wbmp, xpmが含まれます。さらに便利なことに、PHPはイメージストリー ムを直接ブラウザに出力することができます。 これを動作されるには、イメージ関数のGDライブラリを指定してPHPをコ ンパイル必要があります。使用したいイメージ形式によっては、GDとPHP は他のライブラリも必要とする可能性があります。
PHPのイメージ関数により JPEG、GIF、 PNG、SWF、 TIFF、JPEG2000イメージの 大きさを知ることができます。
注意 イメージの読み込み、書き込み、修正の機能の拡張、デジタルカメラ により撮影された画像のメタデータを読み込むには、要求の節を読ん で下さい。
GDライブラリ( http://www.boutell.com/gd/で取得可能)があれば、画像の作成と操 作を行なうこともできます。
操作できるイメージの形式は、インストールされている GDとこれらのイメージフォーマットにアクセスする ためにGDが必要とするその他のライブラリに依存し ます。gd-1.6より前のバージョンのgdは、GIFイメージ画像をサポートし ていますが、PNGはサポートしていません。一方、gd-1.6以降のバージョ ンはPNGをサポートし、GIFはサポートしていません。
注意 PHP 4.3以降、GD libの付属版が付属しています。この付属版にはαブ レンディングのようないくつかの機能が追加されています。 この版のコードは、より管理が行き届き、安定しているため、 外部ライブラリの代わりに使用されるべきです。
より多くのイメージ形式を処理するためにGDを拡張したいと思うかもし れません。
表 1サポートされるイメージ形式
イメージ形式 | ダウンロードするライブラリ | 注記 |
---|---|---|
gif | gd-1.6より以前のバージョンのGDでのみサポートされます。 読み込みのみのGIFサポートは、PHP 4.3.0 とバンドルされたGDライブラリの組合せで利用可能です。 | |
jpeg-6b | ftp://ftp.uu.net/graphics/jpeg/ | |
png | http://www.libpng.org/pub/png/libpng.html | gd-1.6以降のバージョンのGDでのみサポートされます。 |
xpm< | ftp://metalab.unc.edu/pub/Linux/libs/X/!INDEX.html | Xウインドウ環境をインストールしている場合、 このライブラリを既に利用可能と思われます。 |
別の種類のフォントを処理できるようにGDを拡張したいと思うかもしれ ません。以下にサポートされるフォントライブラリを示します。
表 2サポートされるフォントライブラリ
フォントライブラリ | ダウンロード | 注記 |
---|---|---|
FreeType 1.x | http://www.freetype.org/ | |
FreeType 2 | http://www.freetype.org/ | |
T1lib | ftp://sunsite.unc.edu/pub/Linux/libs/graphics/) | Type 1フォントをサポートします。 |
--enable-exifを指定してPHPをコ ンパイルした場合、JPEGおよび TIFFイメージのヘッダに格納された情報を処理する ことができるようになります。これにより、以下に示すようにデジタル カメラにより生成されたメタデータを読むことができるようになります。 以下の関数は、GDライブラリを必要としません。
注意 PHPは、exifモジュール用のライブラリの追加を必要としません。
PHPでGDサポートを有効にするには、configure に--with-gd[=DIR]を指定します。ただし、DIRは GDのベースインストールディレクトリです。 To use the recommended bundled version of the GD library configure --with-gd.
Enhance the capabilities of GD to handle more image formats by specifying the --with-XXXX configure switch to your PHP configure line.
表 3Supported image formats
Image Format | Configure Switch |
---|---|
jpeg-6b | To enable support for jpeg-6b add --with-jpeg-dir=DIR. |
png | To enable support for png add --with-png-dir=DIR. Note, libpng requires the zlib library, therefore add --with-zlib-dir[=DIR] to your configure line. |
xpm | To enable support for xpm add --with-xpm-dir=DIR. If configure is not able to find the required libraries, you may add the path to your X11 libraries. |
Enhance the capabilities of GD to deal with different fonts by specifying the --with-XXXX configure switch to your PHP configure line.
表 4Supported font libraries
Font library | Configure Switch |
---|---|
FreeType 1.x | To enable support for FreeType 1.x add --with-ttf[=DIR]. |
FreeType 2 | To enable support for FreeType 2 add --with-freetype-dir=DIR. |
T1lib | To enable support for T1lib (Type 1 fonts) add --with-t1lib[=DIR]. |
Native TrueType string function | To enable support for native TrueType string function add --enable-gd-native-ttf. |
これらの関数の動作は、php.iniの設定により変化します。
Exifは、モジュールmbstringが利用 可能な場合に、UnicodeとユーザコメントのJIS文字エンコーディングの変換を 自動的にサポートします。これは、指定された文字セットを用いてまずコメ ントをデコードすることにより行なわれます。次にこの結果は HTTP出力にマッチする他の文字セットにエンコードされます。
表 5Exif 設定オプション
名前 | デフォルト値 | 変更可能範囲 |
---|---|---|
exif.encode_unicode | "ISO-8859-15" | PHP_INI_ALL |
exif.decode_unicode_motorola | "UCS-2BE" | PHP_INI_ALL |
exif.decode_unicode_intel | "UCS-2LE" | PHP_INI_ALL |
exif.encode_jis | "" | PHP_INI_ALL |
exif.decode_jis_motorola | "JIS" | PHP_INI_ALL |
exif.decode_jis_intel | "JIS" | PHP_INI_ALL |
以下に設定ディレクティブに関する簡単な説明を示します。
exif.encode_unicode は、UNICODEユーザコメント が処理される文字セットを定義します。ISO-8859-15がデフォルトとなっ ており、アジア圏を除く多くの地域では動作するはずです。 この設定値は空またはmbstringでサポートされるエンコーディング とすることができます。空の場合、mbstringのカレントの 内部エンコーディングが使用されます。
exif.decode_unicode_motorola は、イメージが モトローラバイトオーダ(ビッグインディアン)の場合に、 Unicodeエンコードされたユーザコメントのイメージの内部文字 セットを定義します。 この設定値は空とすることができませんが、mbstringでサポートされる エンコーディングのリストを指定するとすることができます。 デフォルトは、デフォルトは、UCS-2BEです。
exif.decode_unicode_intel は、イメージがイン テルバイトオーダ(リトルインディアン)の場合に、Unicodeエンコード されたユーザコメントのイメージの内部文字セットを定義します。 この設定値は空とすることができませんが、mbstringでサポートされる エンコーディングのリストを指定するとすることができます。デフォル トは、デフォルトは、UCS-2LEです。
exif.encode_jis は、JIS文字セットの ユーザコメントの処理を定義します。デフォルト値は空であり、 mbstringのカレントの内部エンコーディングを関数が使用する ようになっています。
exif.decode_jis_motorola は、イメージが モトローラバイトオーダ(ビッグインディアン)の場合に、 JISエンコードされたユーザコメントのイメージの内部文字 セットを定義します。 この設定値は空とすることができませんが、mbstringでサポートされる エンコーディングのリストを指定するとすることができます。 デフォルトは、デフォルトは、JISです。
exif.decode_jis_intel は、イメージが インテルバイトオーダ(リトルインディアン)の場合に、 JISエンコードされたユーザコメントのイメージの内部文字 セットを定義します。 この設定値は空とすることができませんが、mbstringでサポートされる エンコーディングのリストを指定するとすることができます。 デフォルトは、デフォルトは、JISです。
これらの定数は、この拡張モジュールで定義されており、 この拡張モジュールがPHP内部にコンパイルされているか実行時に動的にロー ドされるかのどちらかの場合のみ使用可能です。