Forum und email

イメージ関数(image)

導入

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

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

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

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

要件

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

操作できるイメージの形式は、インストールされている 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 を拡張したいと思うかもしれません。

サポートされるイメージ形式
イメージ形式 ダウンロードするライブラリ 注記
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/ (PHP のビルド前に) jpeg-v6b ライブラリをビルドする際、configure で --enable-shared オプションを指定する必要があります。 そうしないと、PHP をビルドする際の configure で libjpeg.(a|so) not found というエラーが発生します。
png » https://www.libpng.org/pub/png/libpng.html gd-1.6以降のバージョンのGDでのみサポートされます。
xpm » ftp://metalab.unc.edu/pub/Linux/libs/X/!INDEX.html Xウインドウ環境をインストールしている場合、 このライブラリを既に利用可能と思われます。

別の種類のフォントを処理できるようにGDを拡張したいと思うかもしれ ません。以下にサポートされるフォントライブラリを示します。

サポートされるフォントライブラリ
フォントライブラリ ダウンロード 注記
FreeType 1.x » https://www.freetype.org/ PHP 6.0.0 でサポートされなくなりました。
FreeType 2 » https://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 ライブラリをコンパイルするには、libpnglibjpeg が必要です。

Windowsの場合、GD2 DLL php_gd2.dllphp.iniに エクステンションとして指定してください。 GD1 DLL php_gd.dllはPHP4.3.2で削除されました。 imagecreatetruecolor()のようにTrueカラーが優先される関数 についてはGD2が必須です。

PHP3においてGDサポートを無効にするには --without-gdを指定してください。

より多くの画像フォーマットを扱えるようにGDの能力を高めるには、 --with-XXXXのような形のオプションを指定します。

サポートされる画像フォーマット
画像フォーマット 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のような形のオプションを指定します。

サポートされるフォントライブラリ
フォントライブラリ 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を指定します。

実行時設定

php.ini の設定により動作が変化します。

Image 設定オプション
名前 デフォルト 変更可能 Changelog
gd.jpeg_ignore_warning "0" PHP_INI_ALL PHP 5.1.3 以降で使用可能です。
PHP_INI_* 定数の詳細および定義については php.ini ディレクティブ を参照してください。

以下に設定ディレクティブに関する 簡単な説明を示します。

gd.jpeg_ignore_warning bool

jpeg2wbmp()imagecreatefromjpeg() が出す警告を無視します。

exif の設定ディレクティブも参照ください。

警告

イメージ関数は非常にメモリを消費します。 memory_limit を十分大きな値にしておくようにしましょう。

リソース型

この拡張モジュールでは、画像 ID および フォント ID の二種類のリソースを定義しています。

定義済み定数

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

GD_VERSION (string)
PHP をコンパイルしたときの GD のバージョン (PHP 5.2.4 以降で利用可能)。
GD_MAJOR_VERSION (integer)
PHP をコンパイルしたときの GD のメジャーバージョン (PHP 5.2.4 以降で利用可能)。
GD_MINOR_VERSION (integer)
PHP をコンパイルしたときの GD のマイナーバージョン (PHP 5.2.4 以降で利用可能)。
GD_RELEASE_VERSION (integer)
PHP をコンパイルしたときの GD のリリースバージョン (PHP 5.2.4 以降で利用可能)。
GD_EXTRA_VERSION (string)
PHP をコンパイルしたときの GD の "追加" バージョン (beta/rc..) (PHP 5.2.4 以降で利用可能)。
IMG_GIF (integer)
imagetypes() の返り値として使用。
IMG_JPG (integer)
imagetypes() の返り値として使用。
IMG_JPEG (integer)
imagetypes() の返り値として使用。

注意: この定数の値は IMAGE_JPG と同じです。

IMG_PNG (integer)
imagetypes() の返り値として使用。
IMG_WBMP (integer)
imagetypes() の返り値として使用。
IMG_XPM (integer)
imagetypes() の返り値として使用。
IMG_COLOR_TILED (integer)
imagecolorallocate() あるいは imagecolorallocatealpha() で割り当てた色のかわりに使用できる、特別な色オプション。
IMG_COLOR_STYLED (integer)
imagecolorallocate() あるいは imagecolorallocatealpha() で割り当てた色のかわりに使用できる、特別な色オプション。
IMG_COLOR_BRUSHED (integer)
imagecolorallocate() あるいは imagecolorallocatealpha() で割り当てた色のかわりに使用できる、特別な色オプション。
IMG_COLOR_STYLEDBRUSHED (integer)
imagecolorallocate() あるいは imagecolorallocatealpha() で割り当てた色のかわりに使用できる、特別な色オプション。
IMG_COLOR_TRANSPARENT (integer)
imagecolorallocate() あるいは imagecolorallocatealpha() で割り当てた色のかわりに使用できる、特別な色オプション。
IMG_ARC_ROUNDED (integer)
imagefilledarc() 関数で使用するスタイル定数。

注意: この定数の値は IMG_ARC_PIE と同じです。

IMG_ARC_PIE (integer)
imagefilledarc() 関数で使用するスタイル定数。
IMG_ARC_CHORD (integer)
imagefilledarc() 関数で使用するスタイル定数。
IMG_ARC_NOFILL (integer)
imagefilledarc() 関数で使用するスタイル定数。
IMG_ARC_EDGED (integer)
imagefilledarc() 関数で使用するスタイル定数。
IMG_GD2_RAW (integer)
imagegd2() 関数で使用する型定数。
IMG_GD2_COMPRESSED (integer)
imagegd2() 関数で使用する型定数。
IMG_EFFECT_REPLACE (integer)
imagelayereffect() 関数で使用するアルファブレンディング効果。
IMG_EFFECT_ALPHABLEND (integer)
imagelayereffect() 関数で使用するアルファブレンディング効果。
IMG_EFFECT_NORMAL (integer)
imagelayereffect() 関数で使用するアルファブレンディング効果。
IMG_EFFECT_OVERLAY (integer)
imagelayereffect() 関数で使用するアルファブレンディング効果。
IMG_FILTER_NEGATE (integer)
imagefilter() 関数で使用する特別な GD フィルタ。
IMG_FILTER_GRAYSCALE (integer)
imagefilter() 関数で使用する特別な GD フィルタ。
IMG_FILTER_BRIGHTNESS (integer)
imagefilter() 関数で使用する特別な GD フィルタ。
IMG_FILTER_CONTRAST (integer)
imagefilter() 関数で使用する特別な GD フィルタ。
IMG_FILTER_COLORIZE (integer)
imagefilter() 関数で使用する特別な GD フィルタ。
IMG_FILTER_EDGEDETECT (integer)
imagefilter() 関数で使用する特別な GD フィルタ。
IMG_FILTER_GAUSSIAN_BLUR (integer)
imagefilter() 関数で使用する特別な GD フィルタ。
IMG_FILTER_SELECTIVE_BLUR (integer)
imagefilter() 関数で使用する特別な GD フィルタ。
IMG_FILTER_EMBOSS (integer)
imagefilter() 関数で使用する特別な GD フィルタ。
IMG_FILTER_MEAN_REMOVAL (integer)
imagefilter() 関数で使用する特別な GD フィルタ。
IMG_FILTER_SMOOTH (integer)
imagefilter() 関数で使用する特別な GD フィルタ。
IMAGETYPE_GIF (integer)
image_type_to_mime_type() および image_type_to_extension() 関数で使用する画像形式定数。
IMAGETYPE_JPEG (integer)
image_type_to_mime_type() および image_type_to_extension() 関数で使用する画像形式定数。
IMAGETYPE_PNG (integer)
image_type_to_mime_type() および image_type_to_extension() 関数で使用する画像形式定数。
IMAGETYPE_SWF (integer)
image_type_to_mime_type() および image_type_to_extension() 関数で使用する画像形式定数。
IMAGETYPE_PSD (integer)
image_type_to_mime_type() および image_type_to_extension() 関数で使用する画像形式定数。
IMAGETYPE_BMP (integer)
image_type_to_mime_type() および image_type_to_extension() 関数で使用する画像形式定数。
IMAGETYPE_WBMP (integer)
image_type_to_mime_type() および image_type_to_extension() 関数で使用する画像形式定数。
IMAGETYPE_XBM (integer)
image_type_to_mime_type() および image_type_to_extension() 関数で使用する画像形式定数。
IMAGETYPE_TIFF_II (integer)
image_type_to_mime_type() および image_type_to_extension() 関数で使用する画像形式定数。
IMAGETYPE_TIFF_MM (integer)
image_type_to_mime_type() および image_type_to_extension() 関数で使用する画像形式定数。
IMAGETYPE_IFF (integer)
image_type_to_mime_type() および image_type_to_extension() 関数で使用する画像形式定数。
IMAGETYPE_JB2 (integer)
image_type_to_mime_type() および image_type_to_extension() 関数で使用する画像形式定数。
IMAGETYPE_JPC (integer)
image_type_to_mime_type() および image_type_to_extension() 関数で使用する画像形式定数。
IMAGETYPE_JP2 (integer)
image_type_to_mime_type() および image_type_to_extension() 関数で使用する画像形式定数。
IMAGETYPE_JPX (integer)
image_type_to_mime_type() および image_type_to_extension() 関数で使用する画像形式定数。
IMAGETYPE_SWC (integer)
image_type_to_mime_type() および image_type_to_extension() 関数で使用する画像形式定数。
IMAGETYPE_ICO (integer)
image_type_to_mime_type() および image_type_to_extension() 関数で使用する画像形式定数 (PHP 5.3.0 以降で利用可能)。
PNG_NO_FILTER (integer)
imagepng() 関数で使用する特別な PNG フィルタ。
PNG_FILTER_NONE (integer)
imagepng() 関数で使用する特別な PNG フィルタ。
PNG_FILTER_SUB (integer)
imagepng() 関数で使用する特別な PNG フィルタ。
PNG_FILTER_UP (integer)
imagepng() 関数で使用する特別な PNG フィルタ。
PNG_FILTER_AVG (integer)
imagepng() 関数で使用する特別な PNG フィルタ。
PNG_FILTER_PAETH (integer)
imagepng() 関数で使用する特別な PNG フィルタ。
PNG_ALL_FILTERS (integer)
imagepng() 関数で使用する特別な PNG フィルタ。

Example#1 PHPによるPNGの生成

<?php

header
("Content-type: image/png");
$string $_GET['text'];
$im     imagecreatefrompng("images/button1.png");
$orange imagecolorallocate($im22021060);
$px     = (imagesx($im) - 7.5 strlen($string)) / 2;
imagestring($im3$px9$string$orange);
imagepng($im);
imagedestroy($im);

?>
この例のスクリプトは、<img src="button.php?text"> のようなタグによりあるページからコールされるものです。 上のbutton.phpスクリプトは、この "text" 文字列を引数と し、この場合は "images/button1.png" である基本イメージ の最上部にこの文字列を描いた後、描画後ののイメージを出力します。 この方法は、ボタンのテキストを変更する度に新規のボタンを生成する 必要があるのを回避するために便利な手法です。 この方法により、動的にイメージボタンを生成できます。

目次

  • 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 — ブラウザまたはファイルへ画像を出力する
  • imagegrabscreen — 画面全体をキャプチャする
  • imagegrabwindow — ウィンドウをキャプチャする
  • 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 イメージファイルに変換する