현재 위치: > 최신 기사 목록> 안티 앨리어싱 효과를 반영 할 수없는 일반적인 이유 분석

안티 앨리어싱 효과를 반영 할 수없는 일반적인 이유 분석

M66 2025-05-30

이미지 처리에 PHP를 사용할 때, ImageAntialias () 함수는 종종 이미지 가장자리의 평활도를 향상시키는 데 사용되므로 재규어 효과가 줄어 듭니다. 그러나 많은 개발자들은 실제 애플리케이션에서 기능이 예상대로 적용되지 않는다는 것을 발견했으며 이미지에는 여전히 삐걱 거리는 가장자리가 있습니다. 그렇다면 imageantialias () 가 유효하지 않은 이유는 무엇입니까? 반 알리 아스를 올바르게 달성하는 방법은 무엇입니까? 이 기사는이 문제에 대한 심층 분석을 수행하고 실행 가능한 솔루션을 제안합니다.

1. ImageAntialias의 원리 ()

ImageAntialias (Resource $ image, bool $ enabled) : BOOL은 GD 라이브러리에서 이미지의 앨리어싱 방지를 활성화 또는 비활성화하기 위해 제공되는 함수입니다. 이 기능은 주로 선과 원 및 기타 그래픽 요소를 그리면 적용됩니다. 이미지 스케일링 또는 변환보다는 이미지의 "드로우"단계에 적합합니다.

핵심 사항 :

2. 일반적인 원인 분석

  1. 반 알리 아스 기능이 활성화되지 않습니다 <br> 많은 개발자들은 ImageAntialias () 에게 한 번만 호출하는 모든 그래프 작업에 적용될 수 있다고 잘못 생각하지만, 그리기 전에 True 호출하는 경우에만 적용됩니다.

     $img = imagecreatetruecolor(200, 200);
    imageantialias($img, true); // 그리기 전에 배치해야합니다
    imageline($img, 0, 0, 200, 200, $black);
    
  2. 벡터 도면이 아닌 비트 맵 작업을 사용하십시오 <br> 이미지에서 복사, 스케일링 및 기타 작업을 수행하는 경우 ImageLine () 과 같은 기능을 통해 ImageAntialias ()는 효과가 없습니다. 예를 들어:

     // 기존 이미지를 스케일링 할 때 반 알리 아싱이 트리거되지 않습니다
    imagecopyresized($dst, $src, 0, 0, 0, 0, 100, 100, 200, 200);
    

    대안 : imageecopyresampled ()를 사용하여 스케일을 사용하십시오.

  3. GD 라이브러리 버전 문제 <br> 일부 이전 PHP 또는 GD 라이브러리 버전에서는 ImageAntialias () 함수가 제대로 구현되지 않으며 통화 후에도 영향을 미치지 않는 버그도 있습니다. PHP 버전 7.4 이상을 사용하고 GD가 프리 타입을 지원하는 것이 좋습니다.

  4. 잘못된 이미지 모드 <br> aliasing aliasing 효과는 imageCreate () 로 생성 된 저품질 이미지보다 imageCreatetRueColor () 로 생성 된 이미지에 더 적합합니다. 품질이 낮은 이미지는 풀 컬러 깊이를 지원하지 않으므로 알리어스 성능에 영향을 미칩니다.

     // 권장 사용 true color 영상
    $img = imagecreatetruecolor(300, 300);
    

3. 솔루션 및 최적화 제안

방법 1 : imageCreatetRueColor ()를 사용하고 올바른 도면 순서를 사용해야합니다.

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

imageantialias($img, true); // 반 알리 아스를 켭니다
imageline($img, 10, 10, 190, 190, $black);

imagepng($img, 'https://m66.net/output/line.png');
imagedestroy($img);

방법 2 : 이미지 스케일링을 위해 imageecopyresampled () 대신 imageecopyresampled ()를 사용합니다.

 $src = imagecreatefrompng('https://m66.net/input/image.png');
$dst = imagecreatetruecolor(100, 100);

imagecopyresampled($dst, $src, 0, 0, 0, 0, 100, 100, imagesx($src), imagesy($src));

imagepng($dst, 'https://m66.net/output/resampled.png');
imagedestroy($src);
imagedestroy($dst);

방법 3 :보다 고급 이미지 처리 라이브러리를 사용하십시오

GD 라이브러리의 반 알리 아스 기능은 결국 제한됩니다. 고품질 이미지 처리가 필요한 경우 다음 대안을 고려할 수 있습니다.

  • Imagick (Imagemagick의 PHP 확장) : 더 풍부한 이미지 처리 기능과 고품질의 안티 아일리 아스 알고리즘을 지원합니다.

  • 카이로 : 고품질 도면을 지원하는 2D 그래픽 라이브러리;

  • 타사 서비스 : 예를 들어, 이미지 생성 및 알리 아스 최적화는 이미지 처리 API를 사용하여 수행됩니다.

4. 결론

ImageAntialias ()는 이미지의 재깅 문제를 실제로 향상시킬 수 있지만 해당 시나리오 및 호출 순서에 올바르게 사용되는 경우에만 가능합니다. 작동하지 않는 경우 이미지 기능을 잘못 사용하거나 GD 이미지 유형을 무시하거나 그 기능에 대한 오해가 있기 때문입니다. imageCopyResAmpled ()를 결합하고, 진정한 색상 이미지를 사용하고, GD 라이브러리를 최상의 결과로 업데이트하는 것이 좋습니다. 더 높은 이미지 품질을 추구하는 개발 프로젝트의 경우보다 전문적인 이미지 처리 도구를 도입하는 것을 고려할 수도 있습니다.