PHPでは、 ImagePolygon()関数は、GDライブラリを使用してグラフを描画するときにポリゴンを描画するのに役立ちます。グラフィックをよりスムーズで美しくするために、GDライブラリは画像拡張機能()関数を提供して、アンチエリアスを有効または無効にします。この記事では、 ImageAntialias ()関数を呼び出す前後のImagePolygon()を使用してポリゴンを描画する効果の違いについて説明し、コードの例を介して視覚的に表示します。
ImageAntialias()は、GDライブラリの関数であり、画像のアンチエイリアシングを有効またはオフにします。アンチアリアーシングは、画像処理でエッジを滑らかにするための手法です。エッジの色を混合することにより、エッジの「ギザギザ」が少なくなり、グラフィックの品質が向上します。
関数プロトタイプは次のとおりです。
bool imageantialias(resource $image, bool $enabled);
$画像:画像リソース。
$ enabled :boolean value、 trueは、アンチエイリアシング、偽の無効化を有効にします。
ImagePolygon()は、複数のポイントで構成されるポリゴンを描画するために使用され、関数の署名は次のとおりです。
bool imagepolygon(resource $image, array $points, int $num_points, int $color);
$ポイント: [x1、y1、x2、y2、...、xn、yn]でフォーマットされたポイント座標の配列。
$ num_points :ポイント数。
$カラー:カラーリソース。
デフォルトでは、GDによって描かれたポリゴンのエッジにはアンチエイリアスが付いておらず、特にポリゴンのエッジがより大きく傾いている場合、エッジはより「ギザギザ」に見えます。 ImageAntialias($ image、true)を呼び出した後、描かれたエッジはよりスムーズになり、より良い視覚効果があります。
以下は、ImageAntialias()を呼び出す前後のポリゴンを描くことの違いを示す例です。
<?php
header('Content-Type: image/png');
// キャンバスを作成します
$width = 200;
$height = 200;
$image = imagecreatetruecolor($width, $height);
// 色を割り当てます
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
$red = imagecolorallocate($image, 255, 0, 0);
// 背景を埋めます
imagefill($image, 0, 0, $white);
// ポリゴンの頂点
$points = [50, 30, 150, 30, 180, 100, 100, 170, 20, 100];
// アンチアリアシングをオフにします,ポリゴンを描きます
imageantialias($image, false);
imagepolygon($image, $points, count($points)/2, $black);
// ブラシの位置オフセット,2番目のポリゴンを描きます
// アンチエイリアシングを有効にします,ポリゴンを描きます
imageantialias($image, true);
$points2 = [70, 50, 170, 50, 200, 120, 120, 190, 40, 120];
imagepolygon($image, $points2, count($points2)/2, $red);
// 写真を出力し、リソースをリリースします
imagepng($image);
imagedestroy($image);
?>
アンチエイリアシングのないポリゴン(黒) :エッジは明らかにギザギザです。特にスラッシュは荒いです。
アンチエイリアスポリゴン(赤) :特にアンチエイリアシング効果の斜めの部分で、滑らかなエッジと柔らかい視覚効果。
すべての環境がアンチアリアシングをサポートするわけではなく、一部のサーバー環境またはGDバージョンが完全に効果的ではない場合があります。
アンチエイリアシングは、描画時に計算量を増加させ、複雑なグラフィックスはパフォーマンスにわずかに影響する可能性があります。
ImageAntialias()は、 ImageLine() 、 ImagePolygon()などの特定の描画関数に対してのみ有効です。
ImageAntialias()関数を呼び出すと、画像polygon()の描画エッジの滑らかさを大幅に改善し、図をより美しくします。高品質のグラフィックが必要なシナリオの場合、アンチエイリアスを有効にすることをお勧めしますが、実際のパフォーマンス要件と互換性に基づいて作成する必要があります。