PHPのimageopenpolygon()関数で開いたポリゴン(多角形)を描画する方法をわかりやすく解説
PHPには、指定した画像の上に開いたポリゴン(閉じられていない多角形)を描画するための組み込み関数 imageopenpolygon() が用意されています。通常の imagepolygon() は始点と終点を自動的に結んで閉じた図形を描画しますが、imageopenpolygon() は最後の頂点と最初の頂点を結ばないため、線が開いた状態の多角形を表現できます。
構文
bool imageopenpolygon(resource $image, array $points, int $num_points, int $color)
パラメータ
imageopenpolygon() は、$image、$points、$num_points、$color の4つの引数を受け取ります。
$image − 描画対象となる画像リソースを指定します。
$points − ポリゴンの各頂点の座標(x, y のペア)を格納した配列を指定します。
$num_points − 頂点の数を指定します。頂点の合計数は3つ以上である必要があります。
$color − ポリゴンの線の色を指定します。色は imagecolorallocate() などで事前に作成しておきます。
戻り値
imageopenpolygon() は、描画に成功した場合に true、失敗した場合に false を返します。
サンプルコード1:基本的な開いたポリゴンの描画
<?php
// imagecreatetruecolor() 関数で空の画像を作成
$img = imagecreatetruecolor(700, 300);
// ポリゴン用の色を割り当てる(緑色)
$col_poly = imagecolorallocate($img, 0, 255, 0);
// ポリゴンを描画
imageopenpolygon($img, array(
0, 0,
100, 200,
400, 200
),
3,
$col_poly);
// 画像をブラウザに出力
header('Content-type: image/png');
imagepng($img);
imagedestroy($img);
?>出力結果

この例では、3つの頂点(0, 0)、(100, 200)、(400, 200)を結ぶ2本の緑色の線が描画されます。始点と終点が結ばれないため、開いた状態のポリゴンになります。
サンプルコード2:複数の頂点を持つポリゴンの描画
<?php
// imagecreatetruecolor() 関数で空の画像を作成
$image = imagecreatetruecolor(700, 300);
// 色を割り当てる(シアン)
$blue = imagecolorallocate($image, 0, 255, 255);
// 配列で6つの頂点を定義
$points = array(
60, 130,
130, 230,
280, 230,
350, 130,
210, 30,
60, 130
);
// ポリゴンを描画
imageopenpolygon($image, $points, 6, $blue);
// 画像をブラウザに出力
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>出力結果

この例では、配列に格納した6つの頂点を順番に結ぶシアン色の線が描画されます。頂点の座標を工夫することで、星形や山形など、さまざまな形状の開いた多角形を自由に表現できます。
まとめ
imageopenpolygon() 関数を使えば、GDライブラリを利用して画像上に開いたポリゴンを簡単に描画できます。頂点の座標配列、頂点数、色の3つの要素を指定するだけで動作するため、グラフの描画や図形生成など、動的な画像処理に幅広く活用できます。
-
PHPのimagecrop()関数で画像を指定した矩形領域にトリミングする方法
imagecrop()関数とはimagecrop()は、PHPに組み込まれている関数で、画像を指定した矩形領域にトリミングするために使用されます。指定された矩形領域から画像を切り取り、出力画像を返します。なお、元の画像リソース自体は変更されません。構文resource imagecrop ($image, $rect)パラメータimagecrop()は、$imageと$rectの2つのパラメータを受け取ります。$image − imagecreatetruecolor()やimagecreatefrompng()などの画像作成関数によって返される画像リソースです。処理対象の画像を指定します。$
-
PHPのimagecropauto()関数で画像を自動的に切り抜く方法を徹底解説
imagecropauto()は、PHPに標準で組み込まれている関数の一つで、用意された複数のモードの中から選択して、画像を自動的に切り抜き(クロップ)することができます。構文resource imagecropauto(resource $image, int $mode, float $threshold, int $color)パラメータimagecropauto()は、$image、$mode、$threshold、$color の4つのパラメータを受け取ります。$image − 切り抜き対象となる画像リソースを指定します。$mode − 省略可能なパラメータで、切り抜きモードに対応す