我想使用自定义字体动态渲染文本到图像,最好使用选项直接输出或保存到文件。并且根据字体/大小组合自动设置图像大小。
我已经可以使用GD执行此操作,但它不处理字符相互叠加的字体。
所以现在我正在寻找ImageMagick。我发现an example in the docs似乎做了我想做的事。这可能与php_magick?特别是没有定义图像大小的部分:)如果不是,我可以让命令行magick输出原始图像,所以我可以用PHP将它直接传递给客户端吗?
谢谢!
真正的问题可能是:如何使用php_magick将下面的IM命令转换为PHP代码?
convert -background lightblue -fill blue -font Arial -pointsize 72 label:Anthony
答案 0 :(得分:10)
您应该能够使用Imagick
类的annotateImage
函数来复制该功能。
以下是来自that documentation的直接复制粘贴:
<?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;
答案 1 :(得分:3)
决定跳过API并使用命令行界面。
convert -background lightblue -fill blue -font Arial -pointsize 72 label:Anthony png:-
这将返回原始PNG数据,然后我们可以将其输出到浏览器。将png:-
替换为文件名以保存到文件中。
如果您在此处使用用户输入作为参数,请不要忘记使用escapeshellarg
。