天天看点

php imagick添加文字和图片的方法

Imagick添加文字和图片的方法

<pre>

<?php $image = new Imagick(); $image->readImage("/home/www/wordpress/1212/p1_bg.png");

$watermark = new Imagick();

$watermark->readImage("/home/www/wordpress/1212/2.png");

/*$watermark->scaleImage(750, 1206, true); */ //放到等比例按照宽度缩小图片 按照

$image->compositeImage($watermark, imagick::COMPOSITE_OVER, 0, 0);

$text = new Imagick();

$text>newImage(750, 1206, \'none\'); 这个是包含文字的外面的容器 类似div

$text>setImageFormat(\'png\');

$draw = new ImagickDraw();

$draw>setFont (\'fanzhengdahei.ttf\');//设置中文字体 可以解决中文乱码问题

/*$draw-&gt;setTextAlignment(1);*/ //1 从文字的左下方开始计算的 2 从文字中下来计算 3 从文字右下来计算 默认为1

$draw>setFillColor(new ImagickPixel(\'#f00\'));

$draw>setFontSize(50);

$draw->;annotation(100, 60, \'welcome\');

$draw>annotation(100, 80, \'welcome1\'); //换行写法

$draw1 = new ImagickDraw();

$draw1>setFont (\'fanzhengdahei.ttf\');//设置中文字体 可以解决中文乱码问题

/*$draw>setTextAlignment(1);*/ //1 从文字的左下方开始计算的 2 从文字中下来计算 3 从文字右下来计算 默认为1

$draw1>setFillColor(new ImagickPixel(\'#f00\'));

$draw1>setFontSize(50);

$draw1>annotation(400, 360, \'啦啦啦啦啦啦\');

$text->drawImage($draw);

$text->drawImage($draw1);

$image>compositeImage($text, imagick::COMPOSITE_OVER, 0, 0);

w

</pre>

ps:文字之间加间距 直接打空格就行了

每行14个字 分割成数组的写法

<pre> $mubiao = \'哦啦啦啦啦阿拉啊啊啊啊啊啊啊啊啊二维违法微风啊我飞挖坟挖坟挖坟服务\';

$mubiaocount = mb_strlen($mubiao, \'utf-8\');

$fenge = 14;

$jihang = $mubiaocount / $fenge;

$mubiaolist = array();

for ($i = 0; $i &lt;= $jihang; $i++) {

$mubiaolist[] = mb_substr($mubiao, $fenge*$i, $fenge, \'utf-8\');

}

</pre>

<pre>ps:imagick实现多行文字

foreach ($mubiaolist as $k =&gt; $v) {

$draw1-&gt;annotation(170, 580+$k*40, $v);

}

</pre>

ps:多行文字 可以用属性互相覆盖的

<pre>

$draw1->setTextAlignment(3);

$draw1->annotation(350, 600, \'waf\');

$draw1->setTextAlignment(1);

$draw1->annotation(177, 540, \'eee\');

</pre>

ps:多行 字间距问题都用 单独给文字设置坐标来写为好