在PHP Imagick API中使用Pango

在PHP Imagick API中使用Pango,php,imagemagick,imagick,pango,Php,Imagemagick,Imagick,Pango,我想在PHP代码中使用ImagickAPI来代替runnung命令行 exec("convert -gravity Center -size 200x200 -fill black -font Arial -pointsize 20 pango:\"Hello World!\" output.png"); 对于上述命令,我有以下Imagick API代码: <?php $img = new Imagick(); $draw = new ImagickDraw(); $draw->s

我想在PHP代码中使用ImagickAPI来代替runnung命令行

exec("convert -gravity Center -size 200x200 -fill black -font Arial -pointsize 20 pango:\"Hello World!\" output.png");
对于上述命令,我有以下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吗?

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

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

这仅在ImageMagick编译时支持pango时才有效。

首先,您不需要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支持构建的(这是为您完成的,因为您可以使用命令行)。

只需通过添加背景色来改进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”。有什么想法吗?谢谢