如何为Imagick标题分别为文本和背景着色?

时间:2012-05-25 07:34:30

标签: imagemagick imagick caption

我只想为标题文本着色,而不是整个标题框(或背景)。 在Imagemagick 6.3.7之前,我可以使用此代码来生成红色文本:

$im->newPseudoImage(300, 300, "caption:" . "Put your text" );
$im->colorizeImage('#ff0000',1.0);

我已升级,因为我需要使用以下代码设置字体和字体大小:

$im->setFont("somefont.ttf");
$im->setpointsize(72);

现在colorizeImage的工作方式不同,因为它不会只标注字幕TEXT,但标题背景也是......!

例如,如果我设置黑色背景和白色文字:

$im->newPseudoImage(300, 300, "caption:" . "Put your text" );
$im->setBackgroundColor('black');
$im->colorizeImage('white',1.0);

我在白色文字后面有一个白色背景,或白色框(框中文字的颜色)!

我尝试了不同的东西,在colorizeImage之前或之后的setBackgroundColor,仍然是相同的...我已经做了很多研究,但没有发现任何其他颜色分别为标题和背景标题着色。

有人有意帮助我吗? Thx提前:))

2 个答案:

答案 0 :(得分:1)

  1. 您需要透明背景。然后你只会为前景着色。
  2. 使用 clutImage 应用颜色。 colorizeImage 在更换黑色时应用稍暗的颜色会出现问题。
  3. $im = new Imagick();
    $im->newPseudoImage(300, 300, "caption:" . "Put your text" );
    $im->setBackgroundColor('transparent');
    
    $clut = new Imagick();
    $clut->newImage(1, 1, new ImagickPixel('#ff0000'));
    $txt->clutImage($clut);
    $clut->destroy();
    

答案 1 :(得分:0)

不确定这是否是您想要的,但这会在黑色背景上显示白色文字:

$width = '600';
$height = '200';
$im = new Imagick();
$draw = new ImagickDraw();
$draw->setFont('arial.ttf');
$draw->setFontSize( 96 );
$fillcolor = new ImagickPixel( "white" );
$draw->setFillColor( $fillcolor );
$draw->setGravity( Imagick::GRAVITY_CENTER );
$bgcolor = new ImagickPixel( "black" );
$text = 'Rubblewebs';
$im->newImage($width, $height, $bgcolor );
$im->annotateImage($draw, 0, 0, 0, $text);
$im->setImageFormat("png");
$im->writeImage( 'text.png' );