使用ImageMagick和PHP使用自定义字体绘制文本


Draw text with custom font using ImageMagick and PHP

我想使用自定义字体将文本动态渲染到图像中,最好可以选择直接输出保存到文件。并根据字体/大小组合自动设置图像大小

我已经可以用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