Я хочу динамически визуализировать текст изображения с помощью специального шрифта, предпочтительно с возможностью вывода напрямую или сохранения в файл . И автоматически установить размер изображения в соответствии с комбинацией шрифт / размер .
Я уже могу сделать это с помощью GD, но он не обрабатывает шрифты, где символы накладываются друг на друга.
Итак, теперь я ищу ImageMagick. Я нашел пример в документах, которые, похоже, делают то, что я хочу. Возможно ли это с помощью php_magick? Особенно в той части, где не задан размер изображения 🙂 Если это не так, могу ли я сделать вывод из командной строки в исходное изображение, поэтому я могу передать его непосредственно клиенту с помощью PHP?
Благодаря!
Реальный вопрос, вероятно, заключается в следующем: как мне преобразовать IM-команду ниже в PHP-код, используя php_magick?
convert -background lightblue -fill blue -font Arial -pointsize 72 label:Anthony
Вы должны использовать функцию 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;
Решил пропустить API и использовать интерфейс командной строки.
convert -background lightblue -fill blue -font Arial -pointsize 72 label:Anthony png:-
Это возвращает необработанные данные PNG, которые затем можно выводить в браузер. Замените png:-
с именем файла, которое нужно сохранить в файл.
Не забудьте использовать escapeshellarg
если вы используете пользовательский ввод в качестве параметров здесь.