現在の位置: ホーム> 最新記事一覧> 色の変更を使用して、ImageOpenPolygon()描画プロセスが実行されるかどうかを判断します

色の変更を使用して、ImageOpenPolygon()描画プロセスが実行されるかどうかを判断します

M66 2025-05-17

画像処理にPHPのGDライブラリを使用する場合、 ImageOpenPolygon()は、オープンな(非閉じられていない)ポリゴンパスを描画するための比較的まれですが有用な機能です。ただし、複雑な画像処理では、この描画プロセスが成功しているかどうかを確認する必要があることがよくあります。直感的で効果的な方法は、図面が完了したかどうかを判断することです。

この記事では、色の変更を使用してImageOpenPolygon()によって描かれた結果を検出する方法を詳細に紹介します。

ImageOpenPolygon()とは何ですか?

ImageOpenPolygon()関数の基本的な使用法は次のとおりです。

 bool imageopenpolygon(
    GdImage $image,
    array $points,
    int $num_points,
    int $color
)
  • $画像ImageCreatetrueColor()または同様の関数によって作成された画像リソース。

  • $ポイント:形式[x0、y0、x1、y1、x2、y2、...]の頂点を含む配列。

  • $ num_points :頂点の数。

  • $ COLOR :ポリゴンラインを描くために使用される色識別子。

色の変化によって図面が成功しているかどうかを判断する必要があるのはなぜですか?

通常、 ImageOpenPolygon()は、描画が成功することを示すためにtrueを返しますが、実際の複雑なアプリケーションでは、すべての詳細なエラーは、次のような返品値のみに基づいてキャプチャされない場合があります。

  • 画像リソースは破壊されましたが、機能はまだ真実です。

  • 指定された色は、画像の背景には見えません。

したがって、画像上の特定の位置で色の変化を直接検出すると、図面効果がより直感的に確認できます。

テストプロセスの例

ステップ1:基本的な画像を作成し、背景に記入します

まず、白い背景を持つ画像を作成します。

 <?php
// 空白の画像を作成します
$image = imagecreatetruecolor(200, 200);

// 割り当て白い背景
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
?>

ステップ2:パラメーターを描画する準備をします

ポリゴンのポイントと色を定義します。

 <?php
// ポリゴンの頂点を定義します
$points = [
    50,  50,
    150, 50,
    100, 150
];

// 描画に赤を割り当てます
$red = imagecolorallocate($image, 255, 0, 0);
?>

ステップ3:描画する前に特定の時点で色を記録します

描画する前に、描画されると予想されるラインセグメントのポイントを選択し、現在の色を記録します。

 <?php
// ポリゴンラインの近くのポイントを選択します
$x = 100;
$y = 50;

// 描く前に色を記録します
$beforeColor = imagecolorat($image, $x, $y);
?>

ステップ4: ImageOpenPolygon()を呼び出してポリゴンを描きます

<?php
// 開いたポリゴンを描きます
$result = imageopenpolygon($image, $points, 3, $red);
?>

ステップ5:描画後にポイントの色を記録して比較します

<?php
// 描画後に色を記録します
$afterColor = imagecolorat($image, $x, $y);

// 色が変化するかどうかを確認してください
if ($beforeColor !== $afterColor && $result) {
    echo "うまく描画します,色の変化。";
} else {
    echo "描画が失敗したか、色が変更されていません。";
}
?>

$ beforecolor$ actercolorを比較することにより、図面操作が実際に画像に効果的であるかどうかを確実に判断できます。

ステップ6(オプション):結果を表示するための出力画像

<?php
// 出力画像
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>

画像を保存する場合は、次の方法を使用して画像を保存することもできます。たとえば、 https://m66.net/uploads/test.pngに保存することもできます。

 <?php
// 画像をサーバーに保存します
imagepng($image, '/var/www/m66.net/uploads/test.png');
imagedestroy($image);
?>

注意すべきこと

  • 描画の前後に選択されたテストポイントは、ポリゴンの端にオンまたは非常に近い必要があります。そうしないと、色が変わらない場合があります。

  • ImageOpenPolygon()は、パスを自動的に閉じません(つまり、最後のポイントを最初のポイントに接続しません)。終了効果が必要な場合は、エンドポイントとして出発点を手動で追加してください。

  • 画像の背景がラインの色に似ている場合、誤判断を避けるためにテストポイントを慎重に選択する必要があります。

要約します

色の変化を検出することにより、 ImageOpenPolygon()が正常に実行されるかどうかを検証するだけでなく、描画位置と色の正確性を間接的に検証することもできます。この方法は、肉眼検査によって引き起こされる非効率性とエラーを回避するために、複雑な画像生成またはバッチ処理シナリオの自動検証に適しています。

このチュートリアルが、PHP GDライブラリの図面と検出スキルをより適切に習得できることを願っています!