PHP에서 이미지를 처리 할 때 imageAntialias () 함수는 항 알리 아스 효과를 켜거나 끄는 데 사용됩니다. 반 알리 아싱은 선 가장자리를 부드럽게하고 들쭉날쭉 한 가장자리를 피하고 이미지의 미학을 향상시킬 수 있습니다. 그러나 많은 개발자들은 imageantialias ()를 사용한 후 이미지가 흐릿해진다는 것을 알게 될 것입니다. 왜 이런 일이 발생합니까? 그것을 해결하는 방법?
imageAntialias (Resource $ image, bool $ enabled) : bool
이것은 PHP GD 라이브러리의 함수로, 그려진 라인에서 안티 앨리어싱을 활성화할지 여부를 설정합니다. 이 기능은 주로 선, 사각형 및 다각형을 그리는 경우 스무딩에 작용합니다.
예:
<?php
$image = imagecreatetruecolor(200, 200);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
imagefilledrectangle($image, 0, 0, 199, 199, $white);
imageantialias($image, true); // 반 알리 아스를 켭니다
imageline($image, 10, 10, 190, 190, $black);
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
반 알리 아스의 본질은 부드러운 가장자리입니다 <br> 반 알리 아스는 전경과 배경색 사이에 반투명 픽셀을 추가하여 평활화 효과를 얻습니다.
저해상도 이미지는 흐릿한 느낌을 확대합니다 <br> 저해상도 이미지에서, aliased 반투명 픽셀, 특히 얇은 선이 더 명백 할 것이며, 이는 불분명하게 보일 가능성이 높습니다.
비트 맵 이미지가 아닌 선과 모양에 대해서만 유효합니다.
ImageAntialias () 는 그려진 벡터 라인에만 효과적이며 이미지의 사진과 같은 비트 맵의 선명도를 증가시키지 않습니다. 반대로, 반투명 픽셀의 추가로 인해 전반적인 외관이 약간 흐려집니다.
반 알리 아싱은 고해상도 이미지에서 더 잘 작동하므로 먼저 더 큰 캔버스를 생성 한 다음 이미지 출력을 줄이는 것을 고려할 수 있습니다.
<?php
$width = 400;
$height = 400;
$image = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
imagefilledrectangle($image, 0, 0, $width - 1, $height - 1, $white);
imageantialias($image, true);
imageline($image, 20, 20, 380, 380, $black);
$final = imagecreatetruecolor($width / 2, $height / 2);
imagecopyresampled($final, $image, 0, 0, 0, 0, $width / 2, $height / 2, $width, $height);
header('Content-Type: image/png');
imagepng($final);
imagedestroy($image);
imagedestroy($final);
?>
극도로 얇은 라인이 반 알리 아일 때 흐려질 가능성이 높으며 적절하게 대담한 선으로 가장자리를 더 명확하게 할 수 있습니다.
<?php
imagesetthickness($image, 3); // 선 너비를 설정하십시오3
imageline($image, 10, 10, 190, 190, $black);
?>
PHP의 GD 라이브러리는 반 알리 아스 기능이 제한되어 있습니다. 고품질 이미지 처리가 필요한 경우 Imagemagick과 같은 라이브러리를 사용하여 고급 안티 앨리어싱 및 이미지 처리 기능을 지원하는 것을 고려할 수 있습니다.
반 알리 아싱은 작업을 그리기에만 효과적이며 기존 비트 맵 사진의 문제가 흐려지는 데 유효하지 않습니다. 사진을 처리 할 때 imageAntialias ()를 사용하지 마십시오.