Как покрасить текст и фон отдельно для подписи Imagick?

Я хочу раскрасить только текст подписи, а не все поле подписи (или фон). До 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 не работает таким же образом, так как он окрашивает не только заголовок ТЕКСТ, но и фон заголовка..!

Например, если я установил черный фон и белый текст:

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

У меня есть белый фон за белым текстом или белым полем (цвет текста для поля)!

Я пробовал разные вещи, setBackgroundColor до или после colorizeImage, все то же самое ... Я провел много исследований, но не нашел ничего другого, чтобы раскрасить заголовок и фоновый заголовок отдельно.

Кто-нибудь с идеей, чтобы помочь мне? Спасибо заранее :)


person Elody    schedule 25.05.2012    source источник


Ответы (2)


  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();
person Eric    schedule 18.11.2016

Не уверен, что это то, что вы хотите, но это дает мне белый текст на черном фоне:

$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' );
person Bonzo    schedule 25.05.2012