PHP에서 이미지를 처리 할 때 imageAntialias () 함수는 종종 선과 그래픽을 그리기의 에지 효과를 향상시키는 데 사용되므로 더 부드럽고 자연스럽게 만듭니다. 많은 개발자들이 스케일링되기 전에 또는 스케일링 후 imageAntialias () 기능을 호출하는 것이 더 나은지를 걱정할 것입니까? 이 기사는이 문제에 대해 자세히 논의하고 코드 예제를 사용하여 스케일링 전후 이미지 품질에 대한 ImageAntialias () 기능의 특정 영향을 설명합니다.
ImageAntialias () 는 PHP GD 라이브러리에서 항아리아 효과를 활성화 또는 비활성화하는 기능입니다. 반 알리 아싱은 그래프 가장자리의 들쭉날쭉 한 모양을 줄이고 가장자리를 더 매끄럽게 만드는 데 사용되는 이미지 처리 기술입니다.
bool imageantialias(resource $image, bool $enabled);
$ 이미지 : 이미지 리소스 핸들.
$ enabled : aliasing, false가 꺼질 수 있도록 true 로 설정하십시오.
ImageAntialias () 는 모든 그리기 선과 모양에 효과적이지만 이미지 스케일링 알고리즘에 직접적인 영향을 미치지는 않습니다.
이미지를 스케일링 할 때 일반적인 단계는 다음과 같습니다.
먼저 방지 방지를 켜고 이미지를 확대하십시오.
먼저 이미지를 스케일 한 다음 anti-aliasing을 켭니다.
이 두 가지 방법은 실제 결과에 차이가 있습니다.
<?php
// 원본 이미지를 만듭니다
$src = imagecreatefromjpeg('http://m66.net/images/sample.jpg');
// 대상 줌 이미지를 만듭니다
$dst = imagecreatetruecolor(200, 150);
// 반 알리 아스를 활성화하십시오
imageantialias($dst, true);
// 줌 사본을 수행하십시오
imagecopyresampled($dst, $src, 0, 0, 0, 0, 200, 150, imagesx($src), imagesy($src));
// 출력 사진
header('Content-Type: image/jpeg');
imagejpeg($dst);
// 리소스를 자유롭게합니다
imagedestroy($src);
imagedestroy($dst);
?>
<?php
// 원본 이미지를 만듭니다
$src = imagecreatefromjpeg('http://m66.net/images/sample.jpg');
// 대상 줌 이미지를 만듭니다
$dst = imagecreatetruecolor(200, 150);
// 줌 사본을 수행하십시오
imagecopyresampled($dst, $src, 0, 0, 0, 0, 200, 150, imagesx($src), imagesy($src));
// 반 알리 아스를 활성화하십시오
imageantialias($dst, true);
// 출력 사진
header('Content-Type: image/jpeg');
imagejpeg($dst);
// 리소스를 자유롭게합니다
imagedestroy($src);
imagedestroy($dst);
?>
축소하기 전에 aliasing을 켜십시오 <br> 이 설정은 주로 드로잉 라인, 사각형, 원 등과 같은 후속 그래픽 드로잉 작업에 영향을 미칩니다. imageecopyresampled () 자체는 이미 안티 아리 아싱 알고리즘을 리샘플링하는 것을 기반으로하기 때문에 이미지 스케일링의 품질을 직접 최적화하지 않습니다.
스케일링 후 매끄러운 그래픽을 그려야하는 경우 미리 알리 아스를 켜면 미리 켜질 수 있습니다.
확대 한 후 반 알리 아스를 켜십시오 <br> 순수한 이미지 스케일링 품질은 크게 개선되지 않습니다. 반 알리 아싱은 드로잉 기능에 의한 라인의 처리에만 영향을 미치지 만 전체 이미지의 픽셀 스케일링에 직접적인 영향을 미치지 않기 때문입니다.
요약하면, ImageAntialias ()는 스케일링 작업 자체에 직접적인 영향을 미치지 않으며 주로 후속 드로잉 동작에 작용합니다. 스케일 이미지의 품질을 향상시켜야하는 경우 imageantialias () 에 의존하는 대신 imageecopyresampled () 와 같은 고품질 스케일링 기능을 사용해야합니다.
확대 한 후에도 여전히 벡터 그래픽 (라인, 경계)을 그릴 필요가 있다면 imageAntialias ()를 활성화하는 것이 더 적절합니다.
순전히 스케일링 할 때 imageecopyresampled ()를 사용하면 imageantialias () 를 켜는 것이 품질 향상으로 제한됩니다.