The anti-aliasing function design of the GD library is relatively simple, and only supports on and off. The underlying implementation is controlled by the GD library itself, and there is no fine-grained adjustment interface exposed. Therefore, you cannot directly adjust the degree of anti-aliasing through imageantialias() .
Draw with higher resolution and zoom out
This is the commonly used "supersampling anti-aliasing" idea. You can draw the image at a larger size first, turn on anti-aliasing, and then shrink to the target size through imagecopyresampled() , which can significantly improve the jagging problem.
<?php
$width = 200;
$height = 200;
// Create a double-size canvas
$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);
// Draw lines or figures,Coordinates enlarge twice
imageline($largeImage, 10 * 2, 10 * 2, 190 * 2, 190 * 2, $black);
// Create a target canvas
$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);
?>
Use Imagick to replace GD
If you have higher requirements for anti-aliasing, it is recommended to use ImageMagick's PHP extension Imagick . It supports more anti-aliasing controls, such as setting filters and sampling methods, which have better results and richer parameters.
Example:
<?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;
?>
Manually implement anti-aliasing algorithm
This requires strong image processing knowledge and is generally not recommended unless there are special requirements for anti-aliasing effects.
$image = imagecreatefrompng('https://m66.net/path/to/image.png');