2012-05-25 24 views
3

我只想为标题文本着色,而不是整个标题框(或背景)。 ImageMagick的6.3.7之前,我可以使用此代码有一个红色文本:如何为Imagick标题分隔文字和背景?

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

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

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

现在colorizeImage不以相同的方式工作,因为它不'颜色只有标题文字,但标题背景也.. ..!

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

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

我后面的白色文字白色背景,或者一个白色盒子(文本为框中的颜色)!

我尝试了不同的事情,在colorizeImage之前或之后的setBackgroundColor,仍然是一样的......我做了大量的研究,但没有发现其他颜色分别为标题和背景标题着色。

任何人有想法帮助我? THX提前:)

回答

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'); 
0
  1. 你想要一个透明背景。然后你只会着色前景。
  2. 使用clutImage来应用颜色。 colorizeImage在更换黑色时应用稍暗的颜色有问题。
$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();