PHPのimagefilledarc()関数を使って部分円弧を描画・塗りつぶす方法
imagefilledarc()は、PHPに標準搭載されている関数の一つで、部分的な円弧(弧)を描画し、その内部を塗りつぶすために使用されます。
構文
bool imagefilledarc($image, $cx, $cy, $width, $height, $start, $end, $color, $style)
パラメータ
imagefilledarc()関数は、$image、$cx、$cy、$width、$height、$start、$end、$color、$style の9つのパラメータを受け取ります。
$image − 画像作成関数であるimagecreatetruecolor()によって返される画像リソースです。この関数で画像のサイズを作成します。
$cx − 円弧の中心のX座標を設定します。
$cy − 円弧の中心のY座標を設定します。
$width − 円弧の幅を設定します。
$height − 円弧の高さを設定します。
$start − 描画開始角度を度数法(°)で指定します。
$end − 円弧の終了角度を度数法(°)で指定します。0°は時計の3時の位置に相当し、円弧はそこから時計回りに描画されます。
$color − imagecolorallocate()関数で作成されたカラー識別子です。
$style − 円弧の塗りつぶし方法を指定するパラメータで、以下の値から選択できます。
IMG_ARC_PIE
IMG_ARC_CHORD
IMG_ARC_NOFILL
IMG_ARC_EDGED
スタイル定数の違い
IMG_ARC_PIEとIMG_ARC_CHORDは互いに排他的な関係にあり、同時に使用することはできません。
IMG_ARC_CHORDは開始角度と終了角度を直線で結んだ形状(弦)を描画します。一方、IMG_ARC_PIEは中心まで結ばれた丸みのある扇形を描画します。
IMG_ARC_NOFILLを指定すると、円弧や弦が塗りつぶされず、輪郭線のみが描画されます。
IMG_ARC_EDGEDはIMG_ARC_NOFILLと組み合わせて使用し、開始角度と終了角度を中心点と結ぶ線を描画することを意味します。
戻り値
描画に成功した場合はtrueを、失敗した場合はfalseを返します。
サンプルコード1
<?php
define("WIDTH", 700);
define("HEIGHT", 550);
// 画像を作成
$image = imagecreate(WIDTH, HEIGHT);
// 色を割り当て
$bg = $white = imagecolorallocate($image, 0x00, 0x00, 0x80);
$gray = imagecolorallocate($image, 122, 122, 122);
// 扇形の円弧を描画
$center_x = (int)WIDTH/2;
$center_y = (int)HEIGHT/2;
imagerectangle($image, 0, 0, WIDTH-2, HEIGHT-2, $gray);
imagefilledarc($image, $center_x, $center_y, WIDTH/2,
HEIGHT/2, 0, 220, $gray, IMG_ARC_PIE);
// 画像を出力
header("Content-Type: image/gif");
imagepng($image);
?>出力結果

サンプルコード2
<?php
// imagecreatetruecolor関数で画像を作成
$image = imagecreatetruecolor(700, 300);
// ダークグレーとダークレッドの色を割り当て
$darkgray = imagecolorallocate($image, 0x90, 0x90, 0x90);
$darkred = imagecolorallocate($image, 0x90, 0x00, 0x00);
// 立体感(3D効果)のある円グラフを描画
for ($i = 60; $i > 50; $i--) {
imagefilledarc($image, 100, $i, 200, 100, 75, 360, $darkred, IMG_ARC_PIE);
}
imagefilledarc($image, 100, $i, 200, 100, 45, 75 , $darkgray, IMG_ARC_PIE);
// 画像を出力してメモリを解放
header('Content-type: image/gif');
imagepng($image);
imagedestroy($image);
?>出力結果

このようにimagefilledarc()関数を活用すれば、シンプルな扇形から立体感のある円グラフまで、さまざまな図形を動的に生成できます。GDライブラリを使った画像処理の基礎として、ぜひ覚えておきましょう。
-
PHPのimagecropauto()関数で画像を自動的に切り抜く方法を徹底解説
imagecropauto()は、PHPに標準で組み込まれている関数の一つで、用意された複数のモードの中から選択して、画像を自動的に切り抜き(クロップ)することができます。構文resource imagecropauto(resource $image, int $mode, float $threshold, int $color)パラメータimagecropauto()は、$image、$mode、$threshold、$color の4つのパラメータを受け取ります。$image − 切り抜き対象となる画像リソースを指定します。$mode − 省略可能なパラメータで、切り抜きモードに対応す
-
PHPのimagedashedline()関数とは?破線を描画する方法を徹底解説
PHPのimagedashedline()関数とはimagedashedline() 関数は、画像上に破線(ダッシュライン)を描画するための関数です。指定した開始点の座標から終了点の座標へ向かって、指定した色の破線を引きます。構文imagedashedline( $image , $x1 , $y1 , $x2 , $y2 , $color )パラメータimageimagecreatetruecolor() などで作成した画像リソースを指定します。x1線の始点となるx座標。y1線の始点となるy座標。x2線の終点となるx座標。y2線の終点となるy座標。color破線に使用する色。imagecol