PHPのimagefilledpolygon()関数で塗りつぶしポリゴンを描画する方法
imagefilledpolygon() 関数とは
imagefilledpolygon() は、PHPのGDライブラリに組み込まれている関数で、指定した頂点に基づいて塗りつぶされたポリゴン(多角形)を描画するために使用されます。三角形のような単純な図形から、複数の頂点を持つ複雑な多角形まで、任意の形状を指定した色で塗りつぶして描画できます。なお、この関数を利用するには、サーバーでGDライブラリが有効になっている必要があります。
構文
bool imagefilledpolygon($image, $points, $num_points, $color)
パラメータ
imagefilledpolygon() 関数は、以下の4つのパラメータを受け取ります。
$image − imagecreatetruecolor() 関数などで作成した画像リソースを指定します。
$points − ポリゴンの頂点座標を格納した配列を指定します。座標は x1, y1, x2, y2, ... の順に並べます。
$num_points − ポリゴンの頂点の総数を指定します。ポリゴンとして成立するには、最低3つの頂点が必要です。
$color − imagecolorallocate() 関数で作成した塗りつぶし色の識別子を指定します。
戻り値
描画に成功した場合は True を、失敗した場合は False を返します。
例1:6つの頂点を持つポリゴンを描画する
<?php
// ポリゴンの頂点座標を配列に設定
$values = array(
40, 50, // 点1 (x, y)
20, 240, // 点2 (x, y)
60, 60, // 点3 (x, y)
240, 20, // 点4 (x, y)
50, 40, // 点5 (x, y)
10, 10 // 点6 (x, y)
 );
// imagecreatetruecolor関数で空白画像を作成
$img = imagecreatetruecolor(700, 350);
// グレーと青の色を割り当てる
$bg = imagecolorallocate($img, 122, 122, 122);
$blue = imagecolorallocate($img, 0, 0, 255);
// 背景を塗りつぶす
imagefilledrectangle($img, 0, 0, 350, 350, $bg);
// ポリゴンを描画する
imagefilledpolygon($img, $values, 6, $blue);
// 画像を出力する
header('Content-type: image/png');
imagepng($img);
imagedestroy($img);
?>
出力結果

例2:5つの頂点を持つポリゴン(五角形)を描画する
<?php
// ポリゴンの頂点座標を設定
$values = array(
150, 50, // 点1 (x, y)
55, 119, // 点2 (x, y)
91, 231, // 点3 (x, y)
209, 231, // 点4 (x, y)
245, 119 // 点5 (x, y)
 );
// 指定サイズの空白画像を作成する
$img = imagecreatetruecolor(700, 350);
// 背景色(グレー)を設定
$bg = imagecolorallocate($img, 122, 122, 122);
// 赤色を設定
$red = imagecolorallocate($img, 255, 0, 0);
// 背景を塗りつぶす
imagefilledrectangle($img, 0, 0, 350, 350, $bg);
// ポリゴンを描画する
imagefilledpolygon($img, $values, 5, $red);
// 画像を出力する
header('Content-type: image/png');
imagepng($img);
imagedestroy($img);
?>
出力結果

補足:PHP 8以降の変更点
PHP 8.0.0 以降では、$num_points パラメータは省略可能になりました。さらに PHP 8.1.0 以降では、$points に ['x' => 値, 'y' => 値] の形式の配列を渡すこともできるようになっています。古いバージョンとの互換性を保ちたい場合は、従来どおり x, y を交互に並べた配列と頂点数を指定する方法が安全です。
-
JavaとOpenCVで塗りつぶしポリゴン(多角形)を描画する方法
Java版OpenCVライブラリの org.opencv.imgproc パッケージには、画像処理のための各種メソッドを提供する Imgproc クラスが含まれています。塗りつぶされたポリゴン(多角形)を描画したい場合は、このクラスが持つ fillPoly() メソッドを呼び出します。fillPoly() メソッドのパラメータfillPoly() メソッドは、以下の引数を受け取ります。ポリゴンを描画する対象の画像を表す Mat オブジェクトMatOfPoint 型のオブジェクトを格納した List オブジェクト(ポリゴンの頂点座標)ポリゴンの色を表す Scalar オブジェクト線の種類(ライン
-
OpenCVのfillPoly()関数を使って塗りつぶしポリゴンを描画する方法
この記事では、OpenCVが提供する fillPoly() 関数を使用して、塗りつぶされた多角形(ポリゴン)を画像上に描画する方法を解説します。fillPoly() 関数は、対象となる画像と、多角形の頂点座標を引数として受け取り、指定された色で内部を塗りつぶした形状を描画します。処理の流れ(アルゴリズム)ステップ1:cv2 と numpy をインポートする。 ステップ2:多角形の頂点座標を定義する。 ステップ3:np.zeros() を使って描画用の画像(キャンバス)を作成する。 ステップ4:fillPoly() 関数を使って多角形を描画する。 ステップ5:結果を画面に表示する。サンプルコード