在PHP Imagick API中使用Pango

3

我希望在我的PHP代码中使用Imagick API而不是运行命令行。

exec("convert -gravity Center -size 200x200 -fill black -font Arial -pointsize 20 pango:\"Hello World!\" output.png");

对于上述命令,我有以下的Imagick API代码:

对于上述命令,我有以下的Imagick API代码:

<?php
$img = new Imagick();
$draw = new ImagickDraw();
$draw->setFont("Arial");
$draw->setFontSize(20);
$draw->setGravity( Imagick::GRAVITY_CENTER );
$img->newImage( 200, 200, "black", "png" );

//Pango code for Hello World!

$img->writeImage("output.png");
?>

但是我找不到Pango的相等方法/选项。你知道怎么在Imagick API中使用Pango吗?

3个回答

3

通过添加背景颜色,进一步完善Aite的答案。

$img = new Imagick();
$img->setBackgroundColor(new ImagickPixel('black'));
$img->setFont("Arial");
$img->setPointSize(20);
$img->setGravity( Imagick::GRAVITY_CENTER );
$img->setImageFormat('jpg');

//Pango code for Hello World!
$img->newPseudoImage(200, 200, "pango:Hello World");

$img->writeImage("output.png");

所以我尝试了你的方法,但是我一直收到“无法打开图像'Hello World'”的错误。有什么想法吗?谢谢! - Jeremy

2

pango:\"Hello World!\" 部分是 ImageMagick 中的 '文件名'。这意味着你应该调用 readImage 来 '读取' pango 图像:

$img->readImage("pango:\"Hello World!\"");

只有在编译ImageMagick时添加了对pango的支持,此功能才能正常工作。


1
首先,您不需要ImagickDraw对象,只需将选项设置为Imagick对象,然后创建/调用新的伪图像(使用pango:前缀而不是常规新图像方法)即可。
$img = new Imagick();
$img->setFont("Arial");
$img->setPointSize(20);
$img->setGravity( Imagick::GRAVITY_CENTER );
$img->setImageFormat('jpg');

//Pango code for Hello World!
$img->newPseudoImage(200, 200, "pango:Hello World");

$img->writeImage("output.png");

抱歉,我无法找到如何设置填充颜色的方法,但这可能是另一个问题,您可能知道如何解决它。
附注:您需要确保已安装pango,并且imagemagick库已构建具有pango支持(由于您能够使用命令行,因此已为您完成)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接