PHP マニュアル
前のページ |  | 次のページ

# LXIII. イメージ関数(image)

# 導入

PHPができることは、HTML出力を生成することだけではありません。PHP は、多くの異なるイメージ形式でイメージファイルを作成したり、操作 したりすることもできます。このイメージ形式には、gif, png, jpg, wbmp, xpmが含まれます。さらに便利なことに、PHPはイメージストリー ムを直接ブラウザに出力することができます。 これを動作されるには、イメージ関数のGDライブラリを指定してPHPをコ ンパイル必要があります。使用したいイメージ形式によっては、GDとPHP は他のライブラリも必要とする可能性があります。

PHPのイメージ関数により JPEG、GIF、 PNG、SWF、 TIFF、JPEG2000イメージの 大きさを知ることができます。

exif 拡張モジュール を使用すると、 JPEG や TIFF 画像のヘッダに保存された情報を扱うことができます。 これにより、デジタルカメラが作成したメタデータを読み込むことができます。 exif 関数は GD ライブラリを必要としません。

> 注意: イメージの読み込み、書き込み、修正の機能を拡張するには、 要求の節を呼んでください。 デジタルカメラで撮影した画像のメタデータを読み込むには、 上で説明した exif 拡張モジュール が必要です。

# 要件

GDライブラリ( http://www.boutell.com/gd/で取得可能)があれば、画像の作成と操 作を行なうこともできます。

操作できるイメージの形式は、インストールされている GDとこれらのイメージフォーマットにアクセスする ためにGDが必要とするその他のライブラリに依存し ます。gd-1.6より前のバージョンのgdは、GIFイメージ画像をサポートし ていますが、PNGはサポートしていません。一方、gd-1.6以降でgd-2.0.28未満の バージョンはPNGをサポートし、GIFはサポートしていません。 GIFサポートは、gd-2.0.28で再度有効になりました。

> 注意: PHP 4.3以降、GD libの付属版が付属しています。この付属版にはαブ レンディングのようないくつかの機能が追加されています。 この版のコードは、より管理が行き届き、安定しているため、 外部ライブラリの代わりに使用されるべきです。

> 注意: PHP 6.0.0 では GD 1.x はサポートされなくなりました。 GD 2.0.33 以降が必要となります。

より多くのイメージ形式を処理するために GD を拡張したいと思うかもしれません。

表 1. サポートされるイメージ形式

イメージ形式 | ダウンロードするライブラリ | 注記
--- | --- | ---
`gif` |  | gd-1.6より以前またはgd-2.0.28以降のバージョンのGDでのみサポートされます。 読み込みのみのGIFサポートは、PHP 4.3.0 とバンドルされたGDライブラリの組合せで利用可能です。 書き込みのサポートは、PHP 4.3.9および PHP 5.0.1以降で利用可能です。
`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/ | PHP 6.0.0 でサポートされなくなりました。
`FreeType 2` | http://www.freetype.org/ |
`T1lib` | ftp://sunsite.unc.edu/pub/Linux/libs/graphics/) | Postscript Type 1 フォントをサポートします。

# インストール手順

PHPでGDサポートを有効にするには、configure に`--with-gd[=DIR]`を指定します。ただし、DIRは GDのベースインストールディレクトリです。 PHPにバンドルされている推奨のGDライブラリを使用するには `--with-gd`を指定します。 GD ライブラリをコンパイルするには、libpng と libjpeg が必要です。

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` | jpeg-6b をサポートするには `--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ライブラリのパスを追加してください。

> 注意: libpng と共に PHP をコンパイルする際、GD ライブラリとリンクされる同じバージョンを使用する必要があります。

GDがより多くのフォントを扱えるようにするには `--with-XXXX`のような形のオプションを指定します。

表 4. サポートされるフォントライブラリ

フォントライブラリ | configure オプション
--- | ---
`FreeType 1.x` | FreeType 1.x をサポートするには `--with-ttf[=DIR]`を指定します。
`FreeType 2` | FreeType 2 をサポートするには `--with-freetype-dir=DIR`を指定します。
`T1lib` | T1lib (Postscript Type 1 フォント) をサポートするには `--with-t1lib[=DIR]`を指定します。
`ネイティブ TrueType 文字列関数` | ネイティブな TrueType 文字列関数 をサポートするには `--enable-gd-native-ttf`を指定します。

# 実行時設定

イメージ関数固有の設定項目はありませんが、 exif 拡張モジュール のディレクティブに興味を持つかも知れません。

# リソース型

リソース型は定義されていません。

# 定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。

`IMG_GIF` (integer)

`IMG_JPG` (integer)

`IMG_JPEG` (integer)

`IMG_PNG` (integer)

`IMG_WBMP` (integer)

`IMG_XPM` (integer)

`IMG_COLOR_TILED` (integer)

`IMG_COLOR_STYLED` (integer)

`IMG_COLOR_BRUSHED` (integer)

`IMG_COLOR_STYLEDBRUSHED` (integer)

`IMG_COLOR_TRANSPARENT` (integer)

`IMG_ARC_ROUNDED` (integer)

`IMG_ARC_PIE` (integer)

`IMG_ARC_CHORD` (integer)

`IMG_ARC_NOFILL` (integer)

`IMG_ARC_EDGED` (integer)

`IMAGETYPE_GIF` (integer)

`IMAGETYPE_JPEG` (integer)

`IMAGETYPE_PNG` (integer)

`IMAGETYPE_SWF` (integer)

`IMAGETYPE_PSD` (integer)

`IMAGETYPE_BMP` (integer)

`IMAGETYPE_WBMP` (integer)

`IMAGETYPE_XBM` (integer)

`IMAGETYPE_TIFF_II` (integer)

`IMAGETYPE_TIFF_MM` (integer)

`IMAGETYPE_IFF` (integer)

`IMAGETYPE_JB2` (integer)

`IMAGETYPE_JPC` (integer)

`IMAGETYPE_JP2` (integer)

`IMAGETYPE_JPX` (integer)

`IMAGETYPE_SWC` (integer)

`PNG_NO_FILTER` (integer)

`PNG_FILTER_NONE` (integer)

`PNG_FILTER_SUB` (integer)

`PNG_FILTER_UP` (integer)

`PNG_FILTER_AVG` (integer)

`PNG_FILTER_PAETH` (integer)

`PNG_ALL_FILTERS` (integer)

# 例

例 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" である基本イメージ の最上部にこの文字列を描いた後、描画後ののイメージを出力します。 この方法は、ボタンのテキストを変更する度に新規のボタンを生成する 必要があるのを回避するために便利な手法です。 この方法により、動的にイメージボタンを生成できます。

前のページ | ホーム | 次のページ
iis_stop_service | 上に戻る | gd_info