PHP의 이미지 처리 라이브러리 GD에서 imageAntialias () 함수는 anti-aliasing 함수를 켜거나 끄는 데 사용되며, 그려진 선의 가장자리가 더 부드럽고 이미지의 시각적 효과를 향상시킵니다. 그러나 많은 개발자들은 종종 작동하지 않거나 기능을 사용할 때 효과가 분명하지 않다는 것을 알게됩니다. 이 기사는 imageAntialias () 함수가 제대로 작동하는지 확인하고 샘플 코드를 결합하여 이해하고 적용하는 데 도움이되는 방법을 자세히 소개합니다.
imageAntialias () 함수의 서명은 다음과 같습니다.
bool imageantialias ( resource $image , bool $enabled )
$ 이미지 는 이미지 리소스 핸들입니다.
aliasing을 활성화하려면 $를 활성화 하고 False가 꺼질 수 있습니다.
이 기능은 라인 그리기에 영향을 미치지 만 ImageFilledRectangle () , ImageFill () 등과 같은 충전 함수에 대해 유효하지 않은 Imageline () , ImagePolygon () 등과 같은 특정 드로잉 함수에만 유효합니다.
안티 앨리어싱 함수는 GD의 진정한 색상 이미지 만 지원합니다. 팔레트 이미지 ( imageCreate () )을 만들면 imageAntialias ()가 적용되지 않을 수 있습니다. 이미지를 만들기 위해 imageCreatetRueColor ()를 사용하는 것이 좋습니다.
예:
$image = imagecreatetruecolor(200, 200);
imageantialias($image, true);
imageAntialias ()를 호출하기 전에 실행해야합니다. 그렇지 않으면 작동하지 않습니다. 예를 들어:
<?php
$image = imagecreatetruecolor(200, 200);
imageantialias($image, true);
// 배경색을 설정하십시오
$bg = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bg);
// 라인 색상을 설정하십시오
$lineColor = imagecolorallocate($image, 0, 0, 0);
// 안티 앨리어스 라인을 그립니다
imageline($image, 10, 10, 190, 190, $lineColor);
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
ImageAntialias ()가 모든 드로잉 기능에 대해 작동하지는 않습니다. 부드러운 선을 그리는 데 필요한 부품에만 사용하는 것이 좋습니다. 예를 들어:
ImagePolygon () 으로 다각형 테두리를 그립니다.
Imageline () 로 곡선이나 직선을 그립니다.
채우기 모양 또는 텍스트의 경우 imageTtfText ()를 사용하여 안티 앨리어스 글꼴을 렌더링하는 것과 같은 다른 방법을 사용하여 품질을 향상시킬 수 있습니다.
일부 이전 버전의 GD 라이브러리는 imageAntialias ()를 지원하지 않으며 PHP 7.0+ 및 해당 최신 GD 버전을 사용하는 것이 좋습니다. 또한 효과는 운영 체제 환경마다 다릅니다.
<?php
// 진정한 색상 이미지를 만듭니다,반 알리 아스를 켭니다
$image = imagecreatetruecolor(300, 150);
imageantialias($image, true);
// 배경을 채우십시오
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
// 색상 설정
$black = imagecolorallocate($image, 0, 0, 0);
// 부드러운 선과 다각형을 그립니다
imageline($image, 20, 20, 280, 130, $black);
$points = [50, 120, 150, 30, 250, 120];
imagepolygon($image, $points, 3, $black);
// 출력 이미지
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
위의 예제 코드는 직접 실행될 수 있으며 정상적인 안티 앨리어싱 함수를 보장합니다.