PHPで画像を操作する場合、 ImageOpenPolygon()とImageColorAllocate()は、画像のポリゴンを描画し、塗りつぶしの色を設定するためによく使用される2つの非常に有用な機能です。この記事では、これら2つの関数を使用してポリゴンを作成し、色を追加する方法について詳しく説明します。
ImageOpenPolygon()関数は、画像にポリゴンを描画するために使用されます。ポリゴンは、PHPがそれに基づいて画像に対応する形状を描画する一連の座標で構成されています。
関数プロトタイプ:
bool imageopenpolygon(resource $image, array $points, int $num_points)
$画像:画像リソース、通常、 ImageCreateTrueColor()または同様の関数によって作成された画像。
$ポイント:ポリゴンの各頂点の座標を含む配列、アレイは[x1、y1、x2、y2、...、xn、yn]の形式です。
$ num_points :ポリゴンの頂点の数。
この関数は、特定の座標で構成されるポリゴンを描画しますが、この時点ではポリゴンの内側は中空です。
ImageColorAllocate()関数は、画像に色を割り当てるために使用され、その色の識別子を返します。この識別子を使用すると、ポリゴンの塗りつけまたは境界の色を指定できます。
関数プロトタイプ:
int imagecolorallocate(resource $image, int $red, int $green, int $blue)
$画像:画像リソース。
$赤:色の赤い成分(0-255)。
$緑:色の緑色のコンポーネント(0-255)。
$ BLUE :色の青いコンポーネント(0-255)。
この関数は、画像の色を描画または埋めるために使用される色の識別子を返します。
ポリゴンの充填色を設定するには、 ImageOpenPolygon()とImageFill()関数を組み合わせる必要があります。 ImageFill()関数により、色を指定されたポイントに入力できます。
まず、 ImageOpenPolygon()を使用してポリゴンを描画します。次に、 ImageColorAllocate()を使用して色識別子を割り当て、 ImageFill()を介してポリゴン内の色を埋めます。
サンプルコード:
<?php
// 空白の画像リソースを作成します
$image = imagecreatetruecolor(400, 400);
// 色を割り当てます
$white = imagecolorallocate($image, 255, 255, 255); // 背景色
$blue = imagecolorallocate($image, 0, 0, 255); // ポリゴンの充填色
// 背景色を設定します
imagefill($image, 0, 0, $white);
// ポリゴンの頂点を定義します
$points = array(
100, 100,
200, 50,
300, 100,
300, 200,
200, 250,
100, 200
);
// 使用 imageopenpolygon ポリゴンを描きます
imageopenpolygon($image, $points, count($points) / 2);
// 为ポリゴンの充填色
imagefilledpolygon($image, $points, count($points) / 2, $blue);
// ブラウザに画像を出力します
header("Content-Type: image/png");
imagepng($image);
// メモリをきれいにします
imagedestroy($image);
?>
コード解析:
400x400の画像リソースを作成しました。
ImageColorAllocate()を使用して、色の色とポリゴンの充填色に色を割り当てます。
ポリゴンの頂点を含む配列$ポイントを定義します。
ImageOpenPolygon()関数を使用して、中空のポリゴンが描画されます。
ImageFilledPolygon()関数を使用して、ポリゴンを青色で満たします。
ImagePng()を使用して、生成された画像を出力します。
上記のコードの例を使用すると、 ImageOpenPolygon()を使用してポリゴンを描画し、 ImageColorAllocate()を介して塗りつぶしの色を設定する方法を学ぶことができます。ポリゴンの頂点と色は、特定のニーズを満たすために必要に応じて調整できます。
うまくいけば、この記事がPHP画像処理機能を使用してポリゴンを描き、色を設定する方法を理解するのに役立つことを願っています。