PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

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);
?>

出力結果

PHPのimagefilledpolygon()関数で塗りつぶしポリゴンを描画する方法

例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のimagefilledpolygon()関数で塗りつぶしポリゴンを描画する方法

補足:PHP 8以降の変更点

PHP 8.0.0 以降では、$num_points パラメータは省略可能になりました。さらに PHP 8.1.0 以降では、$points に ['x' => 値, 'y' => 値] の形式の配列を渡すこともできるようになっています。古いバージョンとの互換性を保ちたい場合は、従来どおり x, y を交互に並べた配列と頂点数を指定する方法が安全です。

  1. JavaとOpenCVで塗りつぶしポリゴン(多角形)を描画する方法

    Java版OpenCVライブラリの org.opencv.imgproc パッケージには、画像処理のための各種メソッドを提供する Imgproc クラスが含まれています。塗りつぶされたポリゴン(多角形)を描画したい場合は、このクラスが持つ fillPoly() メソッドを呼び出します。fillPoly() メソッドのパラメータfillPoly() メソッドは、以下の引数を受け取ります。ポリゴンを描画する対象の画像を表す Mat オブジェクトMatOfPoint 型のオブジェクトを格納した List オブジェクト(ポリゴンの頂点座標)ポリゴンの色を表す Scalar オブジェクト線の種類(ライン

  2. OpenCVのfillPoly()関数を使って塗りつぶしポリゴンを描画する方法

    この記事では、OpenCVが提供する fillPoly() 関数を使用して、塗りつぶされた多角形(ポリゴン)を画像上に描画する方法を解説します。fillPoly() 関数は、対象となる画像と、多角形の頂点座標を引数として受け取り、指定された色で内部を塗りつぶした形状を描画します。処理の流れ(アルゴリズム)ステップ1:cv2 と numpy をインポートする。 ステップ2:多角形の頂点座標を定義する。 ステップ3:np.zeros() を使って描画用の画像(キャンバス)を作成する。 ステップ4:fillPoly() 関数を使って多角形を描画する。 ステップ5:結果を画面に表示する。サンプルコード