Изменить imagettftext GD в Imagick - PullRequest
       5

Изменить imagettftext GD в Imagick

0 голосов
/ 12 сентября 2018

У нас есть файл, который добавляет текст к изображению.

Нам необходимо преобразовать код из GD в Imagick, поскольку нам нужно добавить стили и другие функции, которые не может выполнять imagettftext.

Может кто-нибудь преобразовать код ниже, чтобы добавить текст через Imagick вместо использования imagettftext?

$txt = imagettfbbox($fontsize ,0,$font,$str_l1) ;
$x_img = abs($txt[2] - $txt[0]) + 15;
$y_img = abs($txt[7] - $txt[1]) ;

$im_img = imagecreate($x_img, $y_img + 4);
$bg = imagecolorallocate($im_img, 229,229,229); 
imagecolortransparent($im_img, $bg); 
imagettftext($im_img, $fontsize, 0, abs($txt[0]) , abs($txt[5]) , $textcolor, $font, $str_l1);

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Может ли кто-нибудь преобразовать приведенный ниже код для добавления текста через Imagick вместо использования imagettftext?

Не совсем. Мы можем помочь с проблемами, когда вы застряли, предоставить примеры и / или указать правильную документацию. Вы по-прежнему несете ответственность за перенос кода в соответствии с требованиями вашего бизнеса.

Как правильно заметил @ fmw42, ваша задача хорошо документирована и содержит множество примеров. С вы создадите контекст рисования для управления стилями, а затем аннотируете его для изображения.

/**
 * Create a drawing context to control style.
 */
$text = new ImagickDraw();
$text->setFont('Chalkduster');
$text->setFontSize(32);
$text->setFillColor("ORANGE");
$text->setGravity(Imagick::GRAVITY_SOUTH);
/**
 * Apply to image.
 */
$image = new Imagick("wizard:");
$image->annotateImage($text, 0, 0, 0, "Hello World!");
/**
 * Save to disk.
 */
$image->writeImage('output.png');

example output

0 голосов
/ 12 сентября 2018

Я не могу перевести вашу команду в Imagick, но я могу показать вам простой пример, который использует большинство функций добавления текста к изображению с помощью -annotate в Imagemagick.Есть и другие способы добавить текст к изображению.

См .:

https://www.imagemagick.org/Usage/text https://www.imagemagick.org/script/command-line-options.php#annotate https://www.imagemagick.org/script/command-line-options.php#gravity https://www.imagemagick.org/script/command-line-options.php#geometry

См. http://us3.php.net/manual/en/book.imagick.php дляЭквиваленты Imagick:

http://us3.php.net/manual/en/imagick.annotateimage.php http://us3.php.net/manual/en/imagickdraw.setfont.php http://us3.php.net/manual/en/imagickdraw.setfontfamily.php http://us3.php.net/manual/en/imagickdraw.setfontsize.php http://us3.php.net/manual/en/imagickdraw.setfontstretch.php http://us3.php.net/manual/en/imagickdraw.setfontstyle.php http://us3.php.net/manual/en/imagickdraw.setfontweight.php http://us3.php.net/manual/en/imagickdraw.setgravity.php

Ввод:

enter image description here

convert lena.jpg -font ubuntu -fill skyblue -stroke blue -strokewidth 1 -undercolor white -pointsize 36 -gravity south -annotate 0x10+0+20 "TESTING" lena_annotate.jpg


-font is the font name (your can use the path to the font.suffix as well)
-fill is the color of the font
-stroke is the outline color
-strokewidth is the thickness of the stroke outline
-undercolor is the color to put under the text -- you can leave that off for no underfloor.
-gravity is where the text will be placed in the image (south means at the center of the bottom)
-geometry is the offset from the gravity position
-annotate 0x10+0+20 --- 0x10 means to slant only in y by 10 (if 10x10 it will rotate rather than slant); +0+20 means raise by 20 upwards and shift left/right by 0. If you do not want any slanting, then use 0x0. If you do not want it shifted up, then use +0+0.
"TESTING" is the text you want to use.


enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...