天天看點

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:多行 字間距問題都用 單獨給文字設定坐标來寫為好