Нарисуйте текст с помощью собственного шрифта, используя ImageMagick и PHP - PullRequest
2 голосов
/ 16 мая 2011

Я хочу динамически визуализировать текст на изображении с помощью пользовательского шрифта, предпочтительно с опцией для непосредственного вывода или с сохранением в файл . И автоматически устанавливает размер изображения в соответствии с комбинацией шрифта / размера .

Я уже могу сделать это с GD, но он не обрабатывает шрифты, где символы накладываются друг на друга.

Так что теперь я смотрю на ImageMagick. Я нашел пример в документах , который, кажется, делает то, что я хочу. Это возможно с php_magick? Особенно та часть, где размер изображения не определен :) Если это не так, могу ли я заставить магию командной строки выводить необработанное изображение, чтобы я мог передать его напрямую клиенту с помощью PHP?

Спасибо!


Реальный вопрос, вероятно, заключается в следующем: как преобразовать приведенную ниже команду IM в код PHP с помощью php_magick?

convert -background lightblue -fill blue -font Arial -pointsize 72 label:Anthony

Ответы [ 2 ]

10 голосов
/ 16 мая 2011

Вы должны иметь возможность использовать функцию annotateImage класса Imagick для дублирования этой функции.

Вот прямая копия-паста из этой документации :

<?php
/* Create some objects */
$image = new Imagick();
$draw = new ImagickDraw();
$pixel = new ImagickPixel( 'gray' );

/* New image */
$image->newImage(800, 75, $pixel);

/* Black text */
$draw->setFillColor('black');

/* Font properties */
$draw->setFont('Bookman-DemiItalic');
$draw->setFontSize( 30 );

/* Create text */
$image->annotateImage($draw, 10, 45, 0, 
    'The quick brown fox jumps over the lazy dog');

/* Give image a format */
$image->setImageFormat('png');

/* Output the image with headers */
header('Content-type: image/png');
echo $image;
3 голосов
/ 01 июня 2011

Решили пропустить API и использовать интерфейс командной строки.

convert -background lightblue -fill blue -font Arial -pointsize 72 label:Anthony png:-

Возвращает необработанные данные PNG, которые мы затем можем вывести в браузер.Вместо png:- укажите имя файла для сохранения в файл.

Не забудьте использовать escapeshellarg, если вы используете здесь ввод данных в качестве параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...