PHP jpeg画像の表示2
jpegファイルに直線を描画する
あらかじめ用意してある画像ファイルに簡単な図形をphpのみで追加できる。もちろん、画像ファイルを作るところからもできるのだが、今回は地図画像に書き込みを行いたいので、すでに用意してある画像を使った。ファイル名はmap600.jpgで、名前からも分かるように、600×600ピクセルのファイルである。 まず、直線であるが、Basic文のline関数のようである。 あらかじめ用意してある画像ファイルに簡単な図形をphpのみで追加できる。もちろん、画像ファイルを作るところからもできるのだが、今回は地図画像に書き込みを行いたいので、すでに用意してある画像を使った。ファイル名はmap600.jpgで、名前からも分かるように、600×600ピクセルのファイルである。
まず、直線であるが、Basic文のline関数のようである。
<?php $image_map600 = imagecreatefromjpeg("map600.jpg"); $black = imagecolorallocate($image_map600, 0, 0, 0); $white = imagecolorallocate($image_map600, 255, 255, 255); $red = imagecolorallocate($image_map600, 255, 0, 0); $green = imagecolorallocate($image_map600, 0, 255, 0); $blue = imagecolorallocate($image_map600, 0, 0, 255); imageline($image_map600,0,0,600,600,$black); imagejpeg($image_map600,"line_map600.jpg"); imagedestroy($image_map600); ?>
imagecolorallocate()
- $black=imagecolorallocate($image_map600, 0, 0, 0)は、$image_map600に、黒色とはなんぞやということを教え込む関数。 ちなみに、後の3つの数字0,0,0で色を指定する。
- 255, 255, 255なら白。255, 0, 0なら赤など。ここでは0〜255までの整数で指定したが、16進数など他の指定のしかたもある。
imageline()
- imageline($image_map600,0,0,600,600,$black) では、$image_map600という画像データに、XY座標(0,0)から(600,600)に色$blackで直線を引くという関数
円、文字列などを描画する
- 少しそれっぽい表示にしてみる
<?php $image_map600 = imagecreatefromjpeg("map600.jpg"); $black = imagecolorallocate($image_map600, 0, 0, 0); $white = imagecolorallocate($image_map600, 255, 255, 255); $red = imagecolorallocate($image_map600, 255, 0, 0); $green = imagecolorallocate($image_map600, 0, 255, 0); $blue = imagecolorallocate($image_map600, 0, 0, 255); $setx=350; $sety=300; $setsize=7; $setfsize=4; $setcolor="$red"; $setstring="point123"; //塗りつぶし部分楕円を描画 imagefilledarc($image_map600,$setx,$sety,$setsize,$setsize,0,360,$setcolor,0); //引き出し線描画 imageline($image_map600,$setx,$sety,$setx+20,$sety-40,$setcolor); //文字列を描画 imagestring($image_map600, $setfsize, $setx+20,$sety-50, $setstring, $setcolor); imagejpeg($image_map600,"new_map600.jpg"); imagedestroy($image_map600); ?> <img src = "new_map600.jpg" border="0">
imagefilledarc()
- imagefilledarc()は、塗りつぶした楕円を描画する。
imagefilledarc($image_map600,$setx,$sety,$setsize,$setsize,0,360,$setcolor,0);
- これは、$image_map600の、$setx,$setyというx,y座標に、$setsize,$setsize(縦横のサイズ)の楕円を、3時の方向を0°として、反時計回りに360°描画する。色は$setcolor、最後の因数は分かりません(笑)、ということらしい。
imagestring()
- imagestring()は文字列を描画。このままでは日本語が表示できない。できる環境もあるかもしれないが、とりあえず、自分の環境ではできない。
imagestring($image_map600, $setfsize, $setx+20,$sety-50, $setstring, $setcolor);
- $image_map600に、フォントサイズ$setfsizeの文字を、 $setx+20,$sety-50の位置(x,y)に、$setstringという内容の文字列を、$setcolorという色で描画する。