GDライブラリは、画像処理にPHPを使用する際に最も一般的に使用されるツールの1つです。このライブラリは、画像を動的に生成および編集するための完全な機能インターフェイスを提供します。描画中の一般的な視覚最適化要件は、アンチエイリアスです。この目的のために、イメージャンティアリアス()関数が生まれました。これにより、特に曲線や対角線を描画する場合、画像の滑らかさが大幅に向上します。ただし、多くの開発者は混乱する問題に遭遇します。たとえImageAntialias()が呼ばれていても、画像は明らかにギザギザに見えます。その理由はしばしばそうです。
ImageAntialias()は、GDライブラリの関数であり、画像の拡張機能を有効にします。その構文は次のとおりです。
imageantialias(resource $image, bool $enabled): bool
$ enabledがtrueに設定されると、画像描画はエッジを滑らかにするためにアンチエアシングモードを有効にします。
実際の開発では、描画操作の前にImageAntialias()を呼び出す必要があります。これは、関数がすでに描かれた数字に遡及的に適用されないためです。画像が描画されると、 ImageAntialias()を呼び出すことは効果がありません。
たとえば、次のコードでは、アンチエイリアシングを有効にしません。
$img = imagecreatetruecolor(200, 200);
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
imagearc($img, 100, 100, 150, 150, 0, 360, $black); // 描画前にアンチエイリアスは有効になりません
imageantialias($img, true); // 無効,遅すぎる
imagepng($img, 'https://m66.net/images/output.png');
imagedestroy($img);
この例では、 ImageAntialias()が有効になっているにもかかわらず、アンチエリアシングがオンになる前にアークが描画されるため、画像はまだギザギザです。
そして、正しい方法は次のとおりです。
$img = imagecreatetruecolor(200, 200);
imageantialias($img, true); // 描画する前にアンチエイリアシングを有効にします
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
imagearc($img, 100, 100, 150, 150, 0, 360, $black); // 描画するときに効果的
imagepng($img, 'https://m66.net/images/output.png');
imagedestroy($img);
このコードにより、画像が描画を開始する前にアンチエイリアシングモードが有効になるため、生成された画像のエッジがよりスムーズになります。
特に高解像度または色のコントラストが不十分な画像では、イメージアンティアリアス()の効果は必ずしもそれほど明白ではないことに注意する必要があります。さらに、 ImageAntialias()は主に線やアークなどのベクトルグラフィックで動作し、ピクセルレベルの画像(写真など)にほとんど影響を与えません。
同時に、思い出させる必要もあります。この関数は、一部のシステムでデフォルトでオフにする場合があります(GDをコンパイルするときに関連する機能は有効になりません)。使用前にfunction_exists( 'imageantialias')で可用性を確認することをお勧めします。
PHPを使用して画像を生成する場合、Smooth Graphics Edgeを取得する場合は、 ImageAntialias()は不可欠なツールです。しかし、それはその使用に重要なポイントを持っています。描画前に呼び出さなければなりません。これを無視すると、その効果が失われ、最終的にレンダリングされる画像はまだギザギザでいっぱいです。したがって、画像処理プロセスでは、コールタイミングを把握することが、高品質の画像出力を達成するための重要なステップです。