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 )
-
例
- 目次
- gd_info -- 現在インストールされているGDライブラリに関する情報を取得する
- getimagesize -- 画像の大きさを取得する
- image_type_to_extension -- 画像形式からファイルの拡張子を取得する
- image_type_to_mime_type -- getimagesize, exif_read_data, exif_thumbnail, exif_imagetypeから返される 画像形式のMIMEタイプを取得する
- image2wbmp -- ブラウザまたはファイルにイメージを出力する
- imagealphablending -- イメージのブレンドモードを設定する
- imageantialias -- アンチエイリアス機能を使用すべきかどうかを判断する
- imagearc -- 部分楕円を描画する
- imagechar -- 水平に文字を描画する
- imagecharup -- 垂直に文字を描画する
- imagecolorallocate -- 画像で使用する色を作成する
- imagecolorallocatealpha -- 画像で使用する色を透過度を指定して作成する
- imagecolorat -- ピクセルの色のインデックスを取得する
- imagecolorclosest -- 指定した色に最も近い色のインデックスを取得する
- imagecolorclosestalpha -- 指定した色+アルファ値に最も近い色のインデックスを取得する
- imagecolorclosesthwb -- 指定した色に最も近い色合い、白、黒を有する色のインデックスを得る
- imagecolordeallocate -- イメージの色リソースを開放する
- imagecolorexact -- 指定した色のインデックスを取得する
- imagecolorexactalpha -- 指定した色+アルファ値のインデックスを取得する
- imagecolormatch -- パレットイメージの色を True カラーイメージに近づける
- imagecolorresolve -- 指定した色または出来るだけ近い色のインデックスを得る
- imagecolorresolvealpha -- 指定した色+アルファ値または最も近い色のインデックスを取得する
- imagecolorset -- 指定したパレットインデックスの色を設定する
- imagecolorsforindex -- カラーインデックスからカラーを取得する
- imagecolorstotal -- 画像パレットの色数を検出する
- imagecolortransparent -- 透明色を定義する
- imageconvolution -- div および offset の係数を使用し、3x3 の畳み込み配列を適用する
- imagecopy -- 画像の一部をコピーする
- imagecopymerge -- イメージの一部をコピー、マージする
- imagecopymergegray -- グレースケールでイメージの一部をコピー、マージする
- imagecopyresampled -- 再サンプリングを行いイメージの一部をコピー、伸縮する
- imagecopyresized -- 画像の一部をコピーしサイズを変更する
- imagecreate -- パレットを使用する新規画像を作成する
- imagecreatefromgd2 -- GD2 ファイルまたは URL から新規イメージを生成する
- imagecreatefromgd2part -- GD2 ファイルまたは URL の指定した部分から新規イメージを生成する
- imagecreatefromgd -- GD ファイルまたは URL から新規イメージを生成する
- imagecreatefromgif -- ファイルまたは URL から新規画像を作成する
- imagecreatefromjpeg -- ファイル又は URL から新規 JPEG 画像を作成する
- imagecreatefrompng -- ファイルまたは URL から新規 PNG 画像を作成する
- imagecreatefromstring -- 文字列の中のイメージストリームから新規イメージを作成する
- imagecreatefromwbmp -- ファイルまたは URL から新規イメージを作成する
- imagecreatefromxbm -- ファイル又は URL から新規イメージを生成する
- imagecreatefromxpm -- ファイルまたは URL から新規イメージを生成する
- imagecreatetruecolor -- TrueColor イメージを新規に作成する
- imagedashedline -- 破線を描画する
- imagedestroy -- 画像を破棄する
- imageellipse -- 楕円を描画する
- imagefill -- 塗り潰す
- imagefilledarc -- 部分楕円を描画し、塗りつぶす
- imagefilledellipse -- 塗りつぶされた楕円を描画する
- imagefilledpolygon -- 塗りつぶした多角形を描画する
- imagefilledrectangle -- 塗りつぶした矩形を描画する
- imagefilltoborder -- 特定色で塗りつぶす
- imagefilter -- 画像にフィルタを適用する
- imagefontheight -- フォントの高さを取得する
- imagefontwidth -- フォントの幅を取得する
- imageftbbox -- freetype2 によるフォントを用いたテキストを囲む箱を取得する
- imagefttext -- FreeType 2 によるフォントを用いてイメージにテキストを描画する
- imagegammacorrect -- GD イメージにガンマ補正を適用する
- imagegd2 -- GD2 イメージをブラウザまたはファイルに出力する
- imagegd -- GD イメージをブラウザまたはファイルに出力する
- imagegif -- ブラウザまたはファイルへ画像を出力する
- imageinterlace -- インターレースを有効もしくは無効にする
- imageistruecolor -- 画像が truecolor かどうか調べる
- imagejpeg -- 画像をブラウザまたはファイルに出力する
- imagelayereffect -- アルファブレンディングフラグを設定し、libgd にバンドルされている レイヤ効果を使用する
- imageline -- 直線を描画する
- imageloadfont -- 新しいフォントを読み込む
- imagepalettecopy -- あるイメージから他のイメージにパレットをコピーする
- imagepng -- PNG イメージをブラウザまたはファイルに出力する
- imagepolygon -- 多角形を描画する
- imagepsbbox -- PostScript Type1 フォントを用いてテキスト矩形のバウンディングボックス を指定する
- imagepsencodefont -- フォントの文字エンコードベクトルを変更する
- imagepsextendfont -- フォントを展開または圧縮する
- imagepsfreefont -- PostScript Type 1 フォント用メモリを解放する
- imagepsloadfont -- ファイルから PostScript Type 1 フォントをロードする
- imagepsslantfont -- フォントを傾ける
- imagepstext -- PostScript Type1 フォントを用いて画像の上に文字列を描く
- imagerectangle -- 矩形を描画する
- imagerotate -- 指定された角度で画像を回転する
- imagesavealpha -- PNG 画像を保存する際に(単一色の透過設定ではない)完全な アルファチャネル情報を保存するフラグを設定する
- imagesetbrush -- 線の描画用にブラシイメージを設定する
- imagesetpixel -- 点を生成する
- imagesetstyle -- 線描画用のスタイルを設定する
- imagesetthickness -- 線描画用の線幅を設定する
- imagesettile -- 塗りつぶし用のイメージを設定する
- imagestring -- 文字列を水平に描画する
- imagestringup -- 文字列を垂直に描画する
- imagesx -- 画像の幅を取得する
- imagesy -- 画像の高さを取得する
- imagetruecolortopalette -- TrueColor イメージをパレットイメージに変換する
- imagettfbbox -- TypeType フォントを使用したテキストの bounding box を生成する
- imagettftext -- TrueType フォントを使用してテキストを画像に書き込む
- imagetypes -- この PHP がサポートしている画像形式を返す
- imagewbmp -- ブラウザまたはファイルにイメージを出力する
- imagexbm -- XBM 画像をブラウザあるいはファイルに出力する
- iptcembed -- バイナリ IPTC データを JPEG イメージに埋めこむ
- iptcparse -- バイナリの IPTC ブロックのタグをパースする
- jpeg2wbmp -- JPEG イメージファイルから WBMP イメージファイルに変換する
- png2wbmp -- PNG イメージファイルから WBMP イメージファイルに変換する