PHPでウェブの世界と繋がろう!
menu
ホーム > PHPテクニック > PHPによる画像と描画

PHPによる画像と描画

Pocket

説明

GD拡張モジュールの確認
 最初にPHP拡張モジュールの「GD」拡張モジュールがインストールされているか確認をして下さい。GD拡張モジュールはPHP4.3以降デフォルトで同梱されています。

phpinfo();

で確認できます。
「gd」表記内容を確認して下さい。

gd
GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.2.1
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled

バージョン1.6以降でJPEGやPNG等がサポートされるようになりました。
また、GIFはサポートされなくなりました。

簡単な画像の描画
 シンプルな矩形画像を描画してみます。

<?php
$image = ImageCreate(300,300);
$GrayArea = ImageColorAllocate($image,0xAA,0xAA,0xAA);
$blackArea = ImageColorAllocate($image,0x00,0x00,0x00);
ImageFilledRectangle($image,50,50,250,250,$blackArea);
header('Content-Type: image/png');
ImagePNG($image);
?>

背景はグレーで黒の四角い画像が表示されます。


→サンプルはこちら

画像ハンドルを返す
 ImageCreate()関数を実行して画像ハンドルを取得する。

<?php
$image = ImageCreate(300,300);
?>
色の指定
 ImageColorAllocate()関数を実行して画像で使用する色を指定する。引数はRGBで指定します。
ImageColorAllocate(image, red, green, blue)
最初に指定した色が画像の背景色になります。

<?php
$GrayArea = ImageColorAllocate($image,0xAA,0xAA,0xAA);
$blackArea = ImageColorAllocate($image,0x00,0x00,0x00);
?>
描画プリミティブ
 ImageFilledRectangle(image, tlx, tly, brx, bry, color)指定した色で矩形画像を描画します。
・image 画像ハンドラ
・tlx 左上x座標
・tly 左上y座標
・brx 右下x座標
・bry 右下y座標
・color 色

<?php
ImageFilledRectangle($image,50,50,250,250,$blackArea);
?>
Content-Type
 適切なContext-Typeヘッダをブラウザに送信します。

<?php
header('Content-Type: image/gif');
header('Content-Type: image/png');
header('Content-Type: image/jpeg');
header('Content-Type: image/vnd.wap.wbmp');
?>
画像出力
 Context-Typeヘッダに合わせて適切な画像出力の関数を実行します。

<?php
ImagePNG($image);
ImageJPEG($image);
ImageWBMP($image);
?>
画像の回転
 imagerotate関数を使用

<?php
$image = ImageCreate(300,300);
$GrayArea = ImageColorAllocate($image,0xAA,0xAA,0xAA);
$blackArea = ImageColorAllocate($image,0x00,0x00,0x00);
ImageFilledRectangle($image,50,50,250,250,$blackArea);
header('Content-Type: image/png');
$imageRotated = imagerotate($image, 45, 1);
ImagePNG($imageRotated);
?>


→サンプルはこちら

画像とテキスト
 テキストの表示はImageString関数を使用する。
ImageString(image, font, x, y, text, color)
・image 画像ハンドラ
・font フォント番号
・x 左上x座標
・y 左上y座標
・text 表示文字列
・color 色

<?php
$image = ImageCreate(300,300);
$GrayArea = ImageColorAllocate($image,0xAA,0xAA,0xAA);
$blackArea = ImageColorAllocate($image,0x00,0x00,0x00);
$RedArea = ImageColorAllocate($image,0xFF,0x00,0x00);
ImageFilledRectangle($image,50,50,250,250,$blackArea);
ImageString($image,10,50,250,'BOX',$RedArea);
header('Content-Type: image/png');
ImagePNG($image);
?>

→サンプルはこちら

グラフのような画像
<?php
//画像ハンドラ作成
$image = ImageCreate(300,300);

//色指定
$GrayArea = ImageColorAllocate($image,0xAA,0xAA,0xAA);
$blackArea = ImageColorAllocate($image,0x00,0x00,0x00);
$redArea = ImageColorAllocate($image,0xFF,0x00,0x00);
$whtArea = ImageColorAllocate($image,0xFF,0xFF,0xFF);
$bleArea = ImageColorAllocate($image,0x00,0x22,0xFF);

//グラフ背景
ImageFilledRectangle($image,50,50,250,250,$whtArea);

//y軸
ImageFilledRectangle($image,50,50,51,250,$blackArea);

//x軸
ImageFilledRectangle($image,50,250,250,251,$blackArea);

//xメモリ
ImageString($image,3,40,250,'0',$whtArea);
ImageString($image,3,70,250,'1',$whtArea);
ImageString($image,3,90,250,'2',$whtArea);
ImageString($image,3,110,250,'3',$whtArea);
ImageString($image,3,130,250,'4',$whtArea);
ImageString($image,3,150,250,'5',$whtArea);
ImageString($image,3,170,250,'6',$whtArea);
ImageString($image,3,190,250,'7',$whtArea);
ImageString($image,3,210,250,'8',$whtArea);
ImageString($image,3,230,250,'9',$whtArea);
ImageString($image,3,250,250,'10',$whtArea);

//uメモリ
ImageString($image,3,40,220,'1',$whtArea);
ImageString($image,3,40,200,'2',$whtArea);
ImageString($image,3,40,180,'3',$whtArea);
ImageString($image,3,40,160,'4',$whtArea);
ImageString($image,3,40,140,'5',$whtArea);
ImageString($image,3,40,120,'6',$whtArea);
ImageString($image,3,40,100,'7',$whtArea);
ImageString($image,3,40,80,'8',$whtArea);
ImageString($image,3,40,60,'9',$whtArea);
ImageString($image,3,40,40,'10',$whtArea);

//グラフ1
ImageFilledRectangle($image,70,70,75,250,$bleArea);
//グラフ2
ImageFilledRectangle($image,90,90,95,250,$bleArea);
//グラフ3
ImageFilledRectangle($image,110,100,115,250,$bleArea);

header('Content-Type: image/png');
ImagePNG($image);
?>

→サンプルはこちら

タグ(=記事関連ワード)

タグ: , , ,

日付

投稿日:2011年11月21日
最終更新日:2012年07月25日

関連記事

配列関数サンプル

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

http://www.tryphp.net/phpref-tech_image/trackback/