画像処理にPHPのGDライブラリを使用する場合、 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を返しますが、実際の複雑なアプリケーションでは、すべての詳細なエラーは、次のような返品値のみに基づいてキャプチャされない場合があります。
画像リソースは破壊されましたが、機能はまだ真実です。
指定された色は、画像の背景には見えません。
したがって、画像上の特定の位置で色の変化を直接検出すると、図面効果がより直感的に確認できます。
まず、白い背景を持つ画像を作成します。
<?php
// 空白の画像を作成します
$image = imagecreatetruecolor(200, 200);
// 割り当て白い背景
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
?>
ポリゴンのポイントと色を定義します。
<?php
// ポリゴンの頂点を定義します
$points = [
50, 50,
150, 50,
100, 150
];
// 描画に赤を割り当てます
$red = imagecolorallocate($image, 255, 0, 0);
?>
描画する前に、描画されると予想されるラインセグメントのポイントを選択し、現在の色を記録します。
<?php
// ポリゴンラインの近くのポイントを選択します
$x = 100;
$y = 50;
// 描く前に色を記録します
$beforeColor = imagecolorat($image, $x, $y);
?>
<?php
// 開いたポリゴンを描きます
$result = imageopenpolygon($image, $points, 3, $red);
?>
<?php
// 描画後に色を記録します
$afterColor = imagecolorat($image, $x, $y);
// 色が変化するかどうかを確認してください
if ($beforeColor !== $afterColor && $result) {
echo "うまく描画します,色の変化。";
} else {
echo "描画が失敗したか、色が変更されていません。";
}
?>
$ beforecolorと$ actercolorを比較することにより、図面操作が実際に画像に効果的であるかどうかを確実に判断できます。
<?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ライブラリの図面と検出スキルをより適切に習得できることを願っています!