PHPでは、 ImagePolygon()関数は、画像にポリゴンを描画するために使用される関数です。開発者は、三角形、長方形、ペンタゴンなどの単純な幾何学的な数字を生成するのに役立ちます。この機能はGD画像ライブラリに基づいているため、使用する前にGDライブラリがサーバーにインストールされ、有効になっていることを確認してください。
bool imagepolygon(resource $image, array $points, int $num_points, int $color)
$画像:ターゲット画像リソース。通常、 ImageCreateTrueColor()やImageCreateFromJpeg()などの関数によって作成されます。
$ポイント:ポリゴンの頂点のすべての座標を含む配列。配列の各ポイントは、 [x1、y1、x2、y2、...]の形式の座標ペアです。
$ num_points :ポリゴンの頂点の数。
$ color :ポリゴンの色を描くと、 ImageColorAllocate()関数を通して色を取得できます。
<?php
// 真の色の画像を作成します
$image = imagecreatetruecolor(200, 200);
// 色を割り当てます
$bg_color = imagecolorallocate($image, 255, 255, 255); // 白い背景
$polygon_color = imagecolorallocate($image, 0, 0, 255); // 青いポリゴン
// 背景の色を埋めます
imagefill($image, 0, 0, $bg_color);
// ポリゴンの頂点を定義します
$points = [
50, 50,
150, 50,
150, 150,
50, 150
];
// ポリゴンを描きます
imagepolygon($image, $points, 4, $polygon_color);
// ブラウザに画像を出力します
header('Content-Type: image/png');
imagepng($image);
// 画像リソースを破壊します
imagedestroy($image);
?>
画像の作成: ImageCreateTrueColor(200、200)を介して200x200の真の色の画像を作成します。
色の割り当て: ImageColorAllocate()を使用して、背景色とポリゴン色の白と青をそれぞれ作成します。
描画ポリゴン:ポリゴンの頂点を定義し、それらをImagePolygon()関数に渡し、パラメーター$ポイントには頂点の座標配列が含まれます。ここでは、頂点が定義されており、頂点は(50、50)、(150、50)、(150、150)、および(50、150)です。
出力画像:ヘッダー( 'Content-Type:Image/PNG')を使用して応答ヘッダーを設定し、PNG画像が返されることをブラウザに通知し、 ImagePng()を使用して画像を出力します。
画像リソースを破壊する: Imagedestroy()を使用して画像リソースを解放して、メモリの漏れを避けます。
六角形や五角形など、より複雑なポリゴンを描きたい場合は、頂点座標を調整するだけです。たとえば、六角形を描くには、次のような座標を設定できます。
$points = [
100, 20,
140, 40,
140, 80,
100, 100,
60, 80,
60, 40
];
$ポイントアレイを調整することにより、さまざまな形状のポリゴンを簡単に描画できます。
ImagePolygon()は、ポリゴンを自動的に埋めるのではなく、ポリゴンのエッジを描くだけです。色を埋める必要がある場合は、 ImageFill()またはImageFilledPolygon()関数を使用できます。
ポリゴンの頂点座標は、画像の座標系に従って定義されます。座標の起源(0、0)は画像の左上隅にあり、X座標は右に増加し、Y座標は底まで増加します。
描画するポリゴンが勾配効果を持つようにしたい場合は、勾配の色値を計算することでそれを行うことができます。たとえば、ポリゴンの各頂点に異なる色を指定して、カラフルなグラフィックを作成できます。
ImagePolygon()関数は、PHPで非常に実用的な関数であり、さまざまな単純なポリゴナル図を描くのに適しています。頂点座標を調整することにより、さまざまな形状のパターンを簡単に作成できます。 PHPのGD画像ライブラリと組み合わせることで、開発者はより複雑な画像処理機能を実装できます。画像効果をさらに強化する場合は、グラデーションの追加、ポリゴンの充填、描画サークルなど、他のGD関数と組み合わせて使用してみてください。