我想使用自定义字体将文本动态渲染到图像中,最好可以选择直接输出或保存到文件。并根据字体/大小组合自动设置图像大小。
我已经可以用GD做到这一点,但它不处理字符相互叠加的字体。
所以现在我正在寻找ImageMagick。我在文档中找到了一个似乎可以做我想做的事的例子。这在php_magick可能吗?尤其是没有定义图像尺寸的部分:)如果不是,我可以让命令行魔术输出原始图像,这样我就可以用 PHP 直接传递给客户端吗?
谢谢!
真正的问题可能是:如何使用php_magick将下面的 IM 命令转换为 PHP 代码?
convert -background lightblue -fill blue -font Arial -pointsize 72 label:Anthony
您应该
能够使用 Imagick
类的 annotateImage
函数来复制该功能。
这是该文档中的直接复制粘贴:
<?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
。