PHPのGDグラフィックスプロセッシングライブラリでは、 ImageOpenPolygon()は、開発者が画像リソースに「開いた」ポリゴンを描画できる非常に実用的な機能です。つまり、ポリゴンの最後のポイントを最初のポイントに自動的に接続しません。これは、ImagePolygon()関数(パスを囲む)とは異なります。次に、 ImageOpenPolygon()のパラメーター、使用法、および実用的なアプリケーションの例について詳しく学びます。
bool imageopenpolygon(
GdImage $image,
array $points,
int $num_points,
int $color
)
注: ImageOpenPolygon()にはPHP 8.0.0以上が必要であり、GDライブラリによってサポートされています。
画像
タイプ: gdimage
説明:通常、 ImageCreateTrueColor()やImageCreate()などの関数によって作成されたターゲット画像リソース。
ポイント
タイプ:配列
説明:頂点座標を含む1次元配列では、配列は(x、y)ペアの順に配置する必要があります。たとえば、 [x1、y1、x2、y2、x3、y3、...] 。
num_points
タイプ: int
説明:配列要素の数ではなく、頂点の数(要素の数は頂点の2倍です)。
色
タイプ: int
説明:ポリゴン線を描くために使用される色。 ImageColorAllocate()関数を使用して取得します。
画像に開いた三角形を描くためのシンプルなPHPスクリプトを作成しましょう。
<?php
// aを作成します 200x200 空白のキャンバス
$image = imagecreatetruecolor(200, 200);
// 色を割り当てます
$white = imagecolorallocate($image, 255, 255, 255);
$blue = imagecolorallocate($image, 0, 0, 255);
// 白で満たされた背景
imagefill($image, 0, 0, $white);
// 三角形の3つの頂点を定義します
$points = [
50, 50, // 頂点1 (x1, y1)
150, 50, // 頂点2 (x2, y2)
100, 150 // 頂点3 (x3, y3)
];
// 開いた三角形を描きます
imageopenpolygon($image, $points, 3, $blue);
// ブラウザに画像を出力します
header('Content-Type: image/png');
imagepng($image);
// リソースを破壊します
imagedestroy($image);
?>
ブラウザで上記のコードを実行すると、下端が自動的に閉じられていない青い開いた三角形が表示されます。
ImageOpenPolygon()は、ユーザーがカスタムグラフィックスを手動で描画できる画像エディタを開発し、ユーザーは「閉じたグラフィックス」の代わりに「ルート」を描画したい場合に非常に便利です。
たとえば、マップアプリケーションでは、ユーザーは、ルートを表すために閉鎖されていないポリラインパスを描画できます。
<?php
$image = imagecreatetruecolor(600, 400);
$background = imagecolorallocate($image, 240, 240, 240);
$pathColor = imagecolorallocate($image, 255, 0, 0);
imagefill($image, 0, 0, $background);
// ユーザーが描いたパスを想定しています
$routePoints = [
50, 100,
200, 80,
300, 150,
450, 120
];
// オープニングルートを描きます
imageopenpolygon($image, $routePoints, 4, $pathColor);
// サーバーに保存します
imagepng($image, '/var/www/m66.net/uploads/path_example.png');
// 掃除
imagedestroy($image);
echo "ロードマップが保存されました,アドレスを表示します:https://m66.net/uploads/path_example.png";
?>
この例では、システムは赤いルートを備えた画像を生成し、 M66.netのサーバーディレクトリに保存します。
ポイントの順序は非常に重要であり、ポイントの間違った順序は予期しないパスにつながる可能性があります。
ポイントアレイの要素の数はnum_points * 2である必要があります。そうしないと、警告がスローされる場合があります。
ImageOpenPolygon()は、ヘッドポイントとテールポイントを自動的に接続しません。閉じる必要がある場合は、 ImagePolygon()を使用してください。
ImageOpenPolygon()は、パス計画、動的軌跡、非閉鎖パターン、その他のシナリオなど、閉鎖されていないポリゴンパスを描画するのに適しています。マスターすると、PHPグラフィックプロセッサがより柔軟で汎用性が高くなります。
描画が必要なWebアプリケーションを開発している場合は、ユーザーエクスペリエンスを次のレベルに引き上げるために柔軟に使用することを忘れないでください!