GD 라이브러리의 aliasing 기능 설계는 비교적 간단하며 ON 및 OFF 만 지원합니다. 기본 구현은 GD 라이브러리 자체에 의해 제어되며 세분화 된 조정 인터페이스는 노출되지 않습니다. 따라서 imageAntialias () 를 통해 반 알리 아스의 정도를 직접 조정할 수는 없습니다.
높은 해상도로 그리고 축소하십시오
이것은 일반적으로 사용되는 "슈퍼 샘플링 방지 방지"아이디어입니다. 먼저 이미지를 더 큰 크기로 그릴 수 있고, aliasing을 켜고, imageecopyresampled () 를 통해 대상 크기로 줄어들 수 있습니다.
<?php
$width = 200;
$height = 200;
// 이중 크기 캔버스를 만듭니다
$largeWidth = $width * 2;
$largeHeight = $height * 2;
$largeImage = imagecreatetruecolor($largeWidth, $largeHeight);
imageantialias($largeImage, true);
$white = imagecolorallocate($largeImage, 255, 255, 255);
$black = imagecolorallocate($largeImage, 0, 0, 0);
imagefilledrectangle($largeImage, 0, 0, $largeWidth, $largeHeight, $white);
// 선이나 그림을 그립니다,좌표가 두 번 확대됩니다
imageline($largeImage, 10 * 2, 10 * 2, 190 * 2, 190 * 2, $black);
// 대상 캔버스를 만듭니다
$finalImage = imagecreatetruecolor($width, $height);
imagecopyresampled($finalImage, $largeImage, 0, 0, 0, 0, $width, $height, $largeWidth, $largeHeight);
header('Content-Type: image/png');
imagepng($finalImage);
imagedestroy($largeImage);
imagedestroy($finalImage);
?>
imagick을 사용하여 GD를 교체하십시오
aliasing에 대한 요구 사항이 더 높으면 Imagemagick의 PHP Extension Imagick을 사용하는 것이 좋습니다. 더 나은 결과와 더 풍부한 매개 변수를 갖는 필터 설정 및 샘플링 방법과 같은 더 많은 방지 컨트롤을 지원합니다.
예:
<?php
$imagick = new Imagick();
$imagick->newImage(200, 200, new ImagickPixel('white'));
$draw = new ImagickDraw();
$draw->setStrokeColor('black');
$draw->setStrokeWidth(2);
$draw->setFillColor('none');
$draw->setStrokeAntialias(true);
$draw->line(10, 10, 190, 190);
$imagick->drawImage($draw);
header("Content-Type: image/png");
echo $imagick;
?>
안티 앨리어싱 알고리즘을 수동으로 구현합니다
이는 강력한 이미지 처리 지식이 필요하며 반 알리 아스 효과에 대한 특별한 요구 사항이 없다면 일반적으로 권장되지 않습니다.
$image = imagecreatefrompng('https://m66.net/path/to/image.png');