画像処理にGDライブラリを使用する場合、 ImageAntialias()関数は非常に便利なツールです。抽出を有効にすることで、描かれた画像のエッジを滑らかにすることができます。しかし、この関数の効果は必ずしも明白ではないかもしれないので、画像の比較を通じて実際に有効になるかどうかを判断する必要があります。この記事では、コードの例と画像出力の結果を比較して、イメージャンティアリアス()の実際の効果を検証する方法を示します。
ImageAntialias(Resource $ Image、Bool $ exedabled):Boolは、 PHP GDライブラリの関数であり、画像でアンチエイリアスが有効になっているかどうかを制御します。この機能は、主に、線、円、楕円などのベクトルグラフィックを描画する役割を果たします。 Trueに設定すると、より複雑なアルゴリズムを使用して、エッジを滑らかにし、画像をより自然にします。一方、画像のエッジは、閉じたときに明らかなギザギザの歯を持っている可能性があります。
関数が有効になっているかどうかを判断するために、同じ画像を2回描画できます。1回アンチアリアーシングを有効にし、アンチアリアーシングを無効にすることができます。次に、2つの画像を比較して、エッジに大きな違いがあるかどうかを確認します。
以下は、それぞれ有効化されていないアンチアリエイジングで画像の結果を出力する単純なPHPスクリプトの例です。
<?php
function draw_circle($antialias, $filename) {
$width = 200;
$height = 200;
$image = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
imagefill($image, 0, 0, $white);
// アンチエイリアシングをオンまたはオフにします
imageantialias($image, $antialias);
// 円を描きます
imageellipse($image, $width / 2, $height / 2, 150, 150, $black);
// 画像を保存します
imagepng($image, $filename);
imagedestroy($image);
}
// アンチアリアーシングを有効にし、個別に保証できない画像を描画します
draw_circle(false, 'no_antialias.png');
draw_circle(true, 'with_antialias.png');
?>
上記のスクリプトを実行した後、2つのPNGファイルが生成されます。
no_antialias.png :アンチアリアスは有効になりません
with_antialias.png :アンチアリアスが有効になっています
ブラウザ内のこれらの2つの画像の比較があり、次のようになります。
アンチアリアーシングを伴う画像エッジは大幅にギザギザです。
アンチエイリアスの有効な画像エッジはより滑らかで、線は柔らかいです。
たとえば、ブラウザの次のアドレスにアクセスして出力効果を表示できます(PHPスクリプトがWebサイトのルートディレクトリに配置されていると仮定して):
https://www.m66.net/no_antialias.png
https://www.m66.net/with_antialias.png
このようにして、 ImageAntialias()が有効かどうかを明確に判断できます。この関数は、画像スケーリングなどの他のGD操作に有効ではなく、グラフィック描画(線、円など)に対してのみ有効であることに注意してください。
GDライブラリバージョンの問題:さまざまなPHPバージョンとGDライブラリには、アンチエイリアシングにさまざまなレベルのサポートがあります。より良い結果を得るには、新しいPHPバージョンを使用することをお勧めします。
画像タイプの制限:アンチエイリアシング効果は、主にベクター描画操作に反映されます。画像がサイズまたはコピーのみである場合、 ImageAntialias()には効果がありません。 smoothing効果を得るためにimagecopyresampled()を使用することをお勧めします。
透明な画像サポート:描画中に透明な背景が関与する場合、 Imagealphableending()およびImagesAvealpha()関連設定の追加処理が必要です。
画像の出力効果を比較することにより、Anti-Aliasに対してImageAntialias()関数が本当に有効になっているかどうかを直感的に判断できます。適切なグラフィカルな図面シーンを構築し、比較のために機能を有効/無効にするだけで、簡単に検証できます。この方法はシンプルで直感的であり、GDの描画品質の問題をトラブルシューティングする効果的な手段です。