GD 라이브러리는 이미지 처리에 PHP를 사용할 때 가장 일반적으로 사용되는 도구 중 하나입니다. 이 라이브러리는 이미지를 동적으로 생성하고 편집하기위한 전체 기능 인터페이스 세트를 제공합니다. 드로잉 중 일반적인 시각적 최적화 요구 사항은 반 알리 아스입니다. 이를 위해 imageAntialias () 함수가 생겨 났으며, 이는 특히 곡선과 대각선을 그릴 때 이미지의 매끄러움을 크게 향상시킵니다. 그러나 많은 개발자들은 혼란스러운 문제를 겪게됩니다. ImageAntialias () 호출하더라도 이미지는 여전히 끔찍한 소리로 보입니다. 그 이유는 종종 사실입니다.
ImageAntialias () 는 GD 라이브러리에서 이미지의 반 알리 아스 기능을 가능하게하는 기능입니다. 구문은 다음과 같습니다.
imageantialias(resource $image, bool $enabled): bool
$ enabled가 true 로 설정되면 이미지 도면을 사용하면 안티 앨리어싱 모드가 더 부드러운 가장자리가 될 수 있습니다.
실제 발전에서 도면 작업 전에 ImageAntialias ()를 호출해야합니다. 함수가 이미 그린 그림에 소급 적용되지 않기 때문입니다. 이미지가 그려지면 imageAntialias () 호출은 영향을 미치지 않습니다 .
예를 들어, 다음 코드는 anti-aliasing을 활성화하지 않습니다.
$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 () 의 효과가 특히 높은 해상도 또는 색상 대비가 열악한 이미지에서 항상 명백한 것은 아닙니다. 또한 ImageAntialias ()는 주로 라인 및 아크와 같은 벡터 그래픽에서 작동하며 픽셀 레벨 이미지 (예 : 사진)에는 거의 영향을 미치지 않습니다.
동시에,이 기능은 일부 시스템에서 기본적으로 꺼질 수 있습니다 (예 : GD를 컴파일 할 때 관련 기능이 활성화되지 않음). 사용하기 전에 function_exists ( 'imageantialias') 의 가용성을 확인하는 것이 좋습니다.
PHP를 사용하여 이미지를 생성 할 때 imageAntialias ()는 매끄러운 그래픽 가장자리를 얻으려면 필수 도구입니다. 그러나 사용의 핵심 사항이 있습니다. 그림을 그리기 전에 호출해야합니다 . 이를 무시하면 효과가 손실되고 결국 렌더링 될 이미지는 여전히 들쭉날쭉 한 것으로 가득합니다. 따라서 이미지 처리 프로세스에서 호출 타이밍을 파악하는 것이 고품질 이미지 출력을 달성하는 데 중요한 단계입니다.