PHPで画像を動的に作成するには、いくつかの方法があります。
代表的な方法としては、下記の2つのモジュールを利用する方法があります。
・gd拡張モジュール
・Imagick拡張モジュール
本記事では、PHPの標準モジュールに同梱されているDG拡張モジュールを利用した方法を解説しています。
画像生成コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
$white = imagecolorallocate($image, 255, 255, 255); $grey = imagecolorallocate($image, 128, 128, 128); $black = imagecolorallocate($image, 0, 0, 0); // 出力ファイル名 $imageName = "img/sample.png"; // 画像を作成 $image = imagecreate(640, 320); // 画像の色指定 imagecolorallocate($image, 240, 240, 240); $font = "meiryo.ttc"; $text = "ほげほげ\n2行目です"; imagettftext($image, 16, 0, 0, 16, $black, $font, $text ); // 画像をファイルに出力 imagepng($image, $imageName); imagedestroy($image); |
上記のように、非常に簡単に画像を動的に生成することができます。
実際に、HTML上に表示する場合には、
画像をキャッシュされないような工夫が必要になりますが、
ちょっとしたサムネイルなどは、自動生成することが可能となります。
imagecreateマニュアル
PHP: imagecreate - Manual
(PHP 4, PHP 5, PHP 7, PHP 8)
imagecreate — パレットを使用する新規画像を作成する
説明
imagecreate ( int $width , int $height ) : GdImage|false
imagecreate() は、 指定した大きさの空の画像を表す画像 ID を返します。一般に、imagecreate() よりは imagecreatetruecolor() を使うことを推奨します。
より高品質な画像処理ができるからです。
パレット形式の画像を出力したい場合は、 imagepng() や imagegif() で画像を保存する直前に imagetruecolortopalette() を呼ばなければいけません。パラメータ
width
画像の幅。height
画像の高さ。返り値
成功した場合に画像オブジェクト、エラー時に false を返します。