XLIイメージ関数(image)

導入

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

PHPのイメージ関数により JPEGGIFPNGSWFTIFFJPEG2000イメージの 大きさを知ることができます。

注意 イメージの読み込み、書き込み、修正の機能の拡張、デジタルカメラ により撮影された画像のメタデータを読み込むには、要求の節を読ん で下さい。

要件

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-6bftp://ftp.uu.net/graphics/jpeg/ 
pnghttp://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.xhttp://www.freetype.org/ 
FreeType 2http://www.freetype.org/ 
T1libftp://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 FormatConfigure 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 libraryConfigure 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
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内部にコンパイルされているか実行時に動的にロー ドされるかのどちらかの場合のみ使用可能です。

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_TIFF_II (integer)

IMAGETYPE_TIFF_MM (integer)

IMAGETYPE_JPC (integer)

IMAGETYPE_JP2 (integer)

IMAGETYPE_JPX (integer)

IMAGETYPE_SWC (integer)

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

目次
exif_imagetype -- イメージの型を定義する
exif_read_data --  JPEGまたはTIFFから EXIFヘッダを読みこむ
exif_thumbnail -- TIFFまたはJPEGイメージに埋め込まれたサムネイルを取得する
gd_info -- Retrieve information about the currently installed GD library
GetImageSize -- JPEG、GIF、PNG、SWF画像の大きさを取得する
image_type_to_mime_type -- Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype
Image2WBMP -- ブラウザまたはファイルにイメージを出力する
ImageAlphaBlending -- イメージをblendingモードに設定する
ImageArc -- 部分楕円の描画
ImageChar -- 水平に文字を描画
ImageCharUp -- 垂直に文字を描画
ImageColorAllocate -- 画像で使用する色を作成する
imagecolorallocatealpha -- Allocate a color for an image
ImageColorAt -- ピクセルの色のインデックスを取得
ImageColorClosest --  指定した色に最も近い色のインデックスを取得する
ImageColorClosestAlpha --  指定した色+アルファ値に最も近い色のIDを取得
ImageColorClosestThwb --  指定した色に最も近いhue、白、黒を有する色のインデックスを得る
ImageColorDeAllocate --  イメージの色リソースを開放する
ImageColorExact -- 指定した色のインデックスを取得する
ImageColorExactAlpha -- 指定した色+アルファ値のIDを取得
ImageColorResolve --  指定した色または出来るだけ近い色のインデックスを得る
ImageColorResolveAlpha --  指定した色+アルファ値または最も近い色のIDを取得する
ImageColorSet -- 指定したパレットインデックスの色を設定する
ImageColorsForIndex -- カラーインデックスからカラーの取得
ImageColorsTotal -- 画像パレットの色数の検出
ImageColorTransparent -- 透明色の定義
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から新規イメージをWindowsビットマップ形式のイメー ジを作成する
ImageCreateFromXBM -- ファイル又はURLから新規イメージを生成する
ImageCreateFromXPM -- ファイルまたはURLから新規イメージを生成する
ImageCreateTrueColor -- TrueColorイメージを新規に作成する
ImageDashedLine -- ダッシュライン(破線)の描画
ImageDestroy -- 画像の消去
ImageEllipse -- 楕円を描画する
ImageFill -- 塗り潰し
ImageFilledArc -- 部分楕円を描画し、塗りつぶす
ImageFilledEllipse -- 塗りつぶされた楕円を描画する
ImageFilledPolygon -- 塗りつぶした多角形の描画
ImageFilledRectangle -- 塗りつぶした矩形の描画
ImageFillToBorder -- 特定色での塗りつぶし
ImageFontHeight -- フォントの高さの取得
ImageFontWidth -- フォントの幅の取得
ImageFtBBox --  freetype2によるフォントを用いたテキストを囲む箱を取得する
ImageFtText --  FreeType 2によるフォントを用いてイメージにテキストを描画する
ImageGammaCorrect --  GDイメージにガンマ補正を適用する
ImageGD2 --  GD2イメージをブラウザまたはファイルに出力する
ImageGD --  GDイメージをブラウザまたはファイルに出力する
ImageGif -- ブラウザーまたはファイルへ画像を出力する
ImageInterlace -- インターレースを有効もしくは無効にする
ImageJPEG -- 画像をブラウザまたはファイルに出力する
ImageLine -- 直線の描画
ImageLoadFont -- 新規フォントのロード
ImagePaletteCopy --  あるイメージから他のイメージにパレットをコピーする
ImagePNG --  PNGイメージをブラウザまたはファイルに出力する
ImagePolygon -- 多角形の描画
ImagePSBBox --  PostScript Type1 フォントを用いてテキスト矩形のバウンディングボックス を指定する
ImagePSCopyFont --  後で修正するためにロード済みのフォントのコピーを作成する
ImagePSEncodeFont -- フォントの文字エンコードベクトルを変更する
ImagePsExtendFont -- フォントを展開または圧縮する
ImagePSFreeFont -- PostScript Type 1 フォント用メモリを解放する
ImagePSLoadFont -- ファイルから PostScript Type 1 フォントをロードする
ImagePsSlantFont -- フォントを傾ける
ImagePSText --  PostScript Type1 フォントを用いて画像の上に文字列を描く
ImageRectangle -- 矩形の描画
imagerotate -- Rotate an image with a given angle
ImageSetBrush -- 線の描画用にブラシイメージを設定する
ImageSetPixel -- 点の生成
ImageSetStyle -- 線描画用のスタイルを設定する
ImageSetThickness -- 線描画用の線幅を設定する
ImageSetTile -- 塗りつぶし用のイメージを設定する
ImageString -- 文字列を水平に描画する
ImageStringUp -- 文字列を垂直に描画する
ImageSX -- 画像の幅を取得
ImageSY -- 画像の高さを取得する
ImageTrueColorToPalette -- TrueColorイメージをパレットイメージに変換する
ImageTTFBBox --  TypeTypeフォントを使用したテキストのbounding boxの生成
ImageTTFText -- TrueTypeフォントを使用したテキストの出力
ImageTypes --  使用中のPHPの実行ファイルでサポートされているイメージの型を返す
ImageWBMP -- ブラウザまたはファイルにイメージを出力する
iptcembed --  バイナリIPTCデータをJPEGイメージに埋めこむ
iptcparse --  バイナリのIPTChttp://www.iptc.org/ブロックを パースする
JPEG2WBMP --  JPEGイメージファイルからWBMPイメージファイルに変換する
PNG2WBMP --  PNGイメージファイルからWBMPイメージファイルに変換する
read_exif_data -- JPEGからEXIFヘッダを読み込む