我正在创建一个PHP图像脚本,它将创建给定半径的圆圈。
我用过:
<?php
imagefilledellipse ( $image, $cx, $cy, $w, $h, $color );
?>
但讨厌它产生的粗糙边缘。所以我正在考虑制作或使用我将输出的圆形字体:
<?php
imagettftext ( $image, $size, $angle, $x, $y, $color, 'fontfile.ttf', $text );
?>
这样字体就会产生一个边缘光滑的圆圈。我的问题是使“字体大小”与“半径大小”匹配。
有什么想法吗?或者也许一个可以在圆上产生平滑边缘的PHP类很棒!
谢谢。
答案 0 :(得分:6)
快速和肮脏的抗锯齿,使图像成为所需尺寸的两倍,然后下采样到所需的尺寸。
$circleSize=90;
$canvasSize=100;
$imageX2 = imagecreatetruecolor($canvasSize*2, $canvasSize*2);
$bg = imagecolorallocate($imageX2, 255, 255, 255);
$col_ellipse = imagecolorallocate($imageX2, 204, 0, 0);
imagefilledellipse($imageX2, $canvasSize, $canvasSize, $circleSize*2, $circleSize*2, $col_ellipse);
$imageOut = imagecreatetruecolor($canvasSize, $canvasSize);
imagecopyresampled($imageOut, $imageX2, 0, 0, 0, 0, $canvasSize, $canvasSize, $canvasSize*2, $canvasSize*2);
header("Content-type: image/png");
imagepng($imageOut);
答案 1 :(得分:2)
聪明的主意,我喜欢!
但也许这个PHP类已经成功了:Antialiased filled Arcs/Ellipses for PHP (GD)
在许多情况下,网站需要动态创建的图像:饼图,圆角,菜单按钮等。此列表是无穷无尽的。 PHP,或者更准确地说是GD库,提供了填充的椭圆弧和椭圆,但它们不是抗锯齿的。因此,我编写了一个PHP函数来轻松地使用PHP渲染填充的抗锯齿椭圆弧或填充的抗锯齿椭圆(以及圆圈..)。绘制这些填充弧现在是一个单线。
答案 2 :(得分:1)
Cairo做好抗锯齿效果。