在PHP Imagick API中使用Pango

时间:2015-05-18 01:41:01

标签: php imagemagick imagick pango

我想在我的PHP代码中使用Imagick API for PHP而不是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吗?

3 个答案:

答案 0 :(得分:2)

通过添加背景颜色来改善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");

答案 1 :(得分:0)

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

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

只有在编译了支持pango的ImageMagick时才能使用。

答案 2 :(得分:0)

首先,你不需要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");
抱歉,我无法找到如何设置填充颜色,但这是另一个您可能知道如何解决它的问题。

P.S。您需要确保安装了pango,并且使用pango支持构建了imagemagick库(这是为您完成的,因为您可以使用命令行)。