我有这个代码:
$im = imagecreatetruecolor(70, 25);
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagecolortransparent($im, imagecolorallocate($im, 0,0,0));
$font = 'font.ttf';
imagettftext($im, 20, 0, 3, 22, $white, $font, $randomnr);
header("Expires: Wed, 1 Jan 1997 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header ("Content-type: image/png");
imagepng($im);
imagedestroy($im);
就像我在标题中所说的那样,它会在文本周围产生一些黑边。我也尝试了imagealphablending
/imagesavealpha
并且我得到了相同的结果(我在透明背景上使用了白色文本,以便您可以看到我在说什么):
更新:解决方案是:
$im = imagecreatetruecolor(70, 25);
$font = 'font.ttf';
//antialiasing:
$almostblack = imagecolorallocate($im,254,254,254);
imagefill($im,0,0,$almostblack);
$black = imagecolorallocate($im,0,0,0);
imagecolortransparent($im,$almostblack);
imagettftext($im, 20, 0, 3, 22, $white, $font, $randomnr);
...