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を拡張したいと思うかもし
れません。
別の種類のフォントを処理できるようにGDを拡張したいと思うかもしれ
ません。以下にサポートされるフォントライブラリを示します。
--enable-exifを指定してPHPをコ
ンパイルした場合、JPEGおよび
TIFFイメージのヘッダに格納された情報を処理する
ことができるようになります。これにより、以下に示すようにデジタル
カメラにより生成されたメタデータを読むことができるようになります。
以下の関数は、GDライブラリを必要としません。
注意:
PHPは、exifモジュール用のライブラリの追加を必要としません。
PHPでGDサポートを有効にするには、configure に--with-gd[=DIR]を指定します。ただし、DIRは
GDのベースインストールディレクトリです。
PHPにバンドルされている推奨のGDライブラリを使用するには
--with-gdを指定します。
Windowsの場合、GD2 DLL php_gd2.dllをphp.iniに
エクステンションとして指定してください。
GD1 DLL php_gd.dllはPHP4.3.2で削除されました。
imagecreatetruecolor()のようにTrueカラーが優先される関数
についてはGD2が必須です。
PHP3においてGDサポートを無効にするには
--without-gdを指定してください。
より多くの画像フォーマットを扱えるようにGDの能力を高めるには、
--with-XXXXのような形のオプションを指定します。
表 3. サポートされる画像フォーマット
| 画像フォーマット | configure オプション |
|---|
| jpeg-6b |
To enable support for jpeg-6b add
--with-jpeg-dir=DIR.
|
| png |
PNGをサポートするには--with-png-dir=DIR
を指定します。ただし、libpngはzlibライブラリを
必要とするため、--with-zlib-dir[=DIR]
もconfigureオプションに追加する必要があります。
|
| xpm |
XPMをサポートするには--with-xpm-dir=DIR
を指定します。必要なライブラリをconfigureが見つけられなかった場合は
X11ライブラリのパスを追加してください。
|
GDがより多くのフォントを扱えるようにするには
--with-XXXXのような形のオプションを指定します。
line.
表 4. サポートされるフォントライブラリ
| フォントライブラリ | configure オプション |
|---|
| FreeType 1.x |
FreeType 1.x をサポートするには
--with-ttf[=DIR]を指定します。
|
| FreeType 2 |
FreeType 2 をサポートするには
--with-freetype-dir=DIRを指定します。
|
| T1lib |
T1lib (Type 1 fonts) をサポートするには
--with-t1lib[=DIR]を指定します。
|
| ネイティブ TrueType 文字列関数 |
ネイティブな TrueType 文字列関数 をサポートするには
--enable-gd-native-ttfを指定します。
|
これらの関数の動作は、php.iniの設定により変化します。
Exifは、モジュールmbstringが利用
可能な場合に、UnicodeとユーザコメントのJIS文字エンコーディングの変換を
自動的にサポートします。これは、指定された文字セットを用いてまずコメ
ントをデコードすることにより行なわれます。次にこの結果は
HTTP出力にマッチする他の文字セットにエンコードされます。
表 5. Exif 設定オプション
| 名前 | デフォルト値 | 変更可能範囲 |
|---|
| 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 |
PHP_INI_*定数に関する詳細と定義については、
ini_set()を参照して下さい。
以下に設定ディレクティブに関す
る簡単な説明を示します。
- exif.encode_unicode
string
exif.encode_unicode は、UNICODEユーザコメント
が処理される文字セットを定義します。ISO-8859-15がデフォルトとなっ
ており、アジア圏を除く多くの地域では動作するはずです。
この設定値は空またはmbstringでサポートされるエンコーディング
とすることができます。空の場合、mbstringのカレントの
内部エンコーディングが使用されます。
- exif.decode_unicode_motorola
string
exif.decode_unicode_motorola は、イメージが
モトローラバイトオーダ(ビッグインディアン)の場合に、
Unicodeエンコードされたユーザコメントのイメージの内部文字
セットを定義します。
この設定値は空とすることができませんが、mbstringでサポートされる
エンコーディングのリストを指定するとすることができます。
デフォルトは、デフォルトは、UCS-2BEです。
- exif.decode_unicode_intel
string
exif.decode_unicode_intel は、イメージがイン
テルバイトオーダ(リトルインディアン)の場合に、Unicodeエンコード
されたユーザコメントのイメージの内部文字セットを定義します。
この設定値は空とすることができませんが、mbstringでサポートされる
エンコーディングのリストを指定するとすることができます。デフォル
トは、デフォルトは、UCS-2LEです。
- exif.encode_jis
string
exif.encode_jis は、JIS文字セットの
ユーザコメントの処理を定義します。デフォルト値は空であり、
mbstringのカレントの内部エンコーディングを関数が使用する
ようになっています。
- exif.decode_jis_motorola
string
exif.decode_jis_motorola は、イメージが
モトローラバイトオーダ(ビッグインディアン)の場合に、
JISエンコードされたユーザコメントのイメージの内部文字
セットを定義します。
この設定値は空とすることができませんが、mbstringでサポートされる
エンコーディングのリストを指定するとすることができます。
デフォルトは、デフォルトは、JISです。
- exif.decode_jis_intel
string
exif.decode_jis_intel は、イメージが
インテルバイトオーダ(リトルインディアン)の場合に、
JISエンコードされたユーザコメントのイメージの内部文字
セットを定義します。
この設定値は空とすることができませんが、mbstringでサポートされる
エンコーディングのリストを指定するとすることができます。
デフォルトは、デフォルトは、JISです。
この拡張モジュールはリソース型を全く定義しません。
これらの定数は、この拡張モジュールで定義されており、
この拡張モジュールがPHP内部にコンパイルされているか実行時に動的にロー
ドされるかのどちらかの場合のみ使用可能です。
例 1. PHPによるPNGの生成
<?php header("Content-type: image/png"); $string = $_GET['text']; $im = imagecreatefrompng("images/button1.png"); $orange = imagecolorallocate($im, 220, 210, 60); $px = (imagesx($im) - 7.5 * strlen($string)) / 2; imagestring($im, 3, $px, 9, $string, $orange); imagepng($im); imagedestroy($im); ?>
|
|
この例のスクリプトは、<img src="button.php?text">
のようなタグによりあるページからコールされるものです。
上のbutton.phpスクリプトは、この "text" 文字列を引数と
し、この場合は "images/button1.png" である基本イメージ
の最上部にこの文字列を描いた後、描画後ののイメージを出力します。
この方法は、ボタンのテキストを変更する度に新規のボタンを生成する
必要があるのを回避するために便利な手法です。
この方法により、動的にイメージボタンを生成できます。