2

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

我已经可以用 GD 做到这一点,但它不处理字符相互重叠的字体。

所以现在我正在寻找 ImageMagick。我在文档中找到了一个似乎可以满足我要求的示例。这可能与 php_magick 吗?尤其是没有定义图像大小的部分:) 如果没有,我可以让命令行魔法输出原始图像,所以我可以用 PHP 直接将它传递给客户端吗?

谢谢!


真正的问题可能是:如何使用 php_magick 将下面的 IM 命令转换为 PHP 代码?

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

2 回答 2

12

您应该能够使用该类的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;
于 2011-05-16T19:31:04.610 回答
3

决定跳过 API 并改用命令行界面。

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

这将返回原始 PNG 数据,然后我们可以将其输出到浏览器。替换png:-为要保存到文件的文件名。

escapeshellarg如果您在此处使用用户输入作为参数,请不要忘记使用。

于 2011-06-01T06:41:07.197 回答