PHP: создание гладкого края, изображения или шрифта? - PullRequest
4 голосов
/ 15 марта 2010

Я делаю скрипт изображения PHP, который будет создавать круги с заданным радиусом.

Я использовал:

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

но ненавижу грубые края, которые он производит. Так что я думал о создании или использовании кругового шрифта, который я выведу, используя:

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

Так что шрифт создаст круг с гладким краем. Моя проблема заключается в том, чтобы размер шрифта соответствовал размеру радиуса.

Есть идеи? Или, может быть, класс PHP, который будет создавать плавное ребро на окружности, был бы великолепен!

Спасибо.

Ответы [ 3 ]

6 голосов
/ 28 марта 2013

для быстрого и грязного сглаживания, сделайте изображение в два раза больше желаемого размера, затем уменьшите частоту до желаемого размера.

$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);
2 голосов
/ 15 марта 2010

Умная идея, мне это нравится!

Но, возможно, этот класс PHP уже делает свое дело: Сглаженные заполненные дуги / эллипсы для PHP (GD)

Во многих случаях веб-сайтам нужны динамически создаваемые изображения: круговые диаграммы, закругленные углы, кнопки меню и т. Д. Этот список бесконечен. PHP, или, точнее, библиотека GD, предоставляет заполненные эллиптические дуги и эллипсы, но они не являются сглаженными. Поэтому я написал PHP-функцию для рендеринга заполненных сглаженных эллиптических дуг или заполненных сглаженных эллипсов (а также окружностей ...) с помощью PHP. Рисование этих заполненных дуг теперь однострочное.

1 голос
/ 15 марта 2010

Каир хорошо сглаживает.

...