PHP:创建一个平滑的边缘圆,图像或字体?

时间:2010-03-14 23:51:44

标签: php image fonts true-type-fonts

我正在创建一个PHP图像脚本,它将创建给定半径的圆圈。

我用过:

<?php
imagefilledellipse ( $image, $cx, $cy, $w, $h, $color );
?>

但讨厌它产生的粗糙边缘。所以我正在考虑制作或使用我将输出的圆形字体:

<?php
 imagettftext ( $image, $size, $angle, $x, $y, $color, 'fontfile.ttf', $text );
?>

这样字体就会产生一个边缘光滑的圆圈。我的问题是使“字体大小”与“半径大小”匹配。

有什么想法吗?或者也许一个可以在圆上产生平滑边缘的PHP类很棒!

谢谢。

3 个答案:

答案 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做好抗锯齿效果。