현재 위치: > 최신 기사 목록> imageAntialias ()의 영향 범위를 제어하는 ​​방법?

imageAntialias ()의 영향 범위를 제어하는 ​​방법?

M66 2025-05-25

PHP의 이미지 처리 중에, imageantialias () 함수는 항 알리 아스 효과를 활성화 또는 비활성화하는 데 사용되므로 이미지에서 라인 또는 그래픽의 평활도를 향상시킵니다. 이 기능은 주로 선, 아크, 직사각형 및 기타 그림을 그리는 경우 사용됩니다. 가장자리를 흐리게함으로써 이미지는 더 매끄럽고 자연스럽게 보입니다. 그러나 그것은 또한 전체 이미지 리소스에 영향을 미치기 때문에 영향의 범위를 합리적으로 제어하는 ​​방법이 개발에서 중요한 문제가되었습니다.

이 기사는 ImageAntialias () 의 범위를 제한하고 불필요한 부분에 미치는 영향을 피하기위한 몇 가지 일반적인 방법을 소개합니다.

1. 기본 사용법 검토

 $img = imagecreatetruecolor(200, 200);
imageantialias($img, true);
$black = imagecolorallocate($img, 0, 0, 0);
imageline($img, 0, 0, 200, 200, $black);

위에서 볼 수 있듯이 ImageAntialias ()는 전체 이미지 리소스 $ IMG 에서 활성화되며 일단 설정되면 해당 리소스의 후속 드로잉 작업을 위해 안티 앨리어싱이 활성화됩니다.

2. 문제 : "지역"의 경우 활성화 또는 비활성화 할 수 없습니다.

ImageAntialias ()는 전체 GD 이미지 리소스에서 작용합니다. 즉, 리소스에서 반 알리 아싱이 가능하면 해당 리소스의 모든 후속 그래픽 그리기 작업이 영향을받습니다. GD 라이브러리는 "특정 영역에 대한 aliasing 만 활성화"를 지원하지 않으므로 특정 부분에서만 행동하도록 직접적으로 제어 할 수 없습니다.

3. 솔루션

GD의 ImageAntialias () 자체는 국소 제어를 지원하지는 않지만 "국소 적 방지"효과 제어를 달성하는 간접적 인 방법이 있습니다.

방법 1 : 이미지 합성을 사용하여 국소 항-알리 아스를 시뮬레이션합니다

별도의 작은 이미지 리소스에서 imageAntialias ()를 활성화하고 도면을 마친 후 메인 이미지로 다시 병합 할 수 있습니다.

 $main = imagecreatetruecolor(400, 400);
$sub = imagecreatetruecolor(100, 100);
imageantialias($sub, true);

$red = imagecolorallocate($sub, 255, 0, 0);
imagefilledellipse($sub, 50, 50, 80, 80, $red);

imagecopy($main, $sub, 150, 150, 0, 0, 100, 100);

이 방법은 메인 이미지 $ 메인 의 다른 드로잉 작업에 영향을 미치지 않으면 서 $ 하위 하위 이미지에만 영향을 미치는 반 알리 아스를 효과적으로 "로컬 화"할 수 있습니다.

방법 2 : 두 가지 리소스를 사용하여 다른 그래픽을 별도로 그리는 것

방법 1과 유사하지만 다중 복잡한 층을 결합하는 데 더 적합합니다. 예를 들어:

 $background = imagecreatetruecolor(400, 400);
$foreground = imagecreatetruecolor(400, 400);

imageantialias($foreground, true);
$white = imagecolorallocate($background, 255, 255, 255);
$blue = imagecolorallocate($foreground, 0, 0, 255);

imagefill($background, 0, 0, $white);
imagefilledpolygon($foreground, [100,100, 300,100, 200,300], 3, $blue);

imagecopy($background, $foreground, 0, 0, 0, 0, 400, 400);

반 알리 아스 전경을 활성화 할 수 있지만 배경은 기본값으로 유지되며 최종 병합이 잘 작동합니다.

방법 3 : 후 처리 및 이미지 스무딩 필터

이것은 ImageAntialias () 를 직접 제어하는 ​​것은 아니지만 경우에 따라 필터를 통해 평활화 될 수 있습니다.

 $img = imagecreatetruecolor(200, 200);
// ... 그래프를 그립니다 ...
imagefilter($img, IMG_FILTER_GAUSSIAN_BLUR);

이 접근법은 "늦은 ​​흐림"이며 실제 반 알리 아스를 대체 할 수는 없지만 일부 양식화 된 이미지에서 유사한 시각적 효과를 얻을 수 있습니다.

4. 요약

ImageAntialias () 는 이미지의 로컬 영역에서 직접 활성화하거나 비활성화 할 수없는 글로벌 설정입니다. 그러나 다음 방법을 통해 행동 범위를 어느 정도 "제한"할 수 있습니다.

  • 그래픽을 여러 서브 이미지 리소스로 분할하여 하위 이미지에서의 알리어스를 가능하게합니다.

  • 이미지 합성을 사용한 로컬 처리;

  • 이미지 필터와 함께 필요할 때 시각적 스무딩이 수행됩니다.

이러한 방법은 기본적으로 GD의 반 알리 아스 메커니즘을 변경할 수는 없지만 이미지 품질과 효율성이 필요한 대부분의 개발 시나리오를 처리하기에 충분합니다.