将imagettftext GD修改为Imagick
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将imagettftext GD修改为Imagick相关的知识,希望对你有一定的参考价值。
我们有一个文件可以为图像添加文字。
我们需要将代码从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);
我无法将您的命令转换为Imagick,但我可以向您展示一个简单的示例,该示例使用在Imagemagick中使用-annotate向图像添加文本的大部分功能。还有其他方法可以向图像添加文本。
看到:
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
有关Imagick的等价物,请参阅http://us3.php.net/manual/en/book.imagick.php:
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
输入:
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.
任何人都可以转换下面的代码通过Imagick而不是使用imagettftext添加文本?
并不是的。当您遇到问题时,我们可以帮助解决问题,提供示例和/或指出正确的文档。您仍然负责移植代码以满足您的业务需求。
正如@ fmw42正确指出的那样,你的任务有很多例子。使用imagick,您将创建一个绘图上下文来管理样式,然后将其注释为图像。
/**
* 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');
以上是关于将imagettftext GD修改为Imagick的主要内容,如果未能解决你的问题,请参考以下文章
即使在激活 GD 库后,imagettftext() 也无法正常工作
Mac php使用gd库出错 Call to undefined function imagettftext()