php imagick 文字居中的方法


php imagick 文字居中的方法
<pre>
public function getwenzinfo($nickName)
{

$nickNamelen = mb_strlen($nickName, 'utf-8');
$wzallkd = 0;
$wzallkdlist = array();
$wzallkdlist[] = 0;
$perzifulist = array();
for ($i = 0; $i < $nickNamelen; $i++) {
$perzifu = mb_substr($nickName, $i, 1, 'utf-8');
$perzifulist[] = $perzifu;
if (preg_match("/^[A-Za-z0-9]+$/", $perzifu) == false) {
// echo '是中文';
$wzkd = 26;
$wzallkd += 26;
} else {
// echo '不是中文';
$wzkd = 17;
$wzallkd += 15;
}
$wzallkdlist[] = $wzkd;
}
/*因為字符串寬度是 字符本身寬度+字符之間的間隔-最后的字符串間隔*/
$wzallkd=$wzallkd-2;
array_pop($wzallkdlist);

$wenziinfo['wzallkd'] = $wzallkd;
$wenziinfo['wzallkdlist'] = $wzallkdlist;
$wenziinfo['perzifulist'] = $perzifulist;

return $wenziinfo;
}

$text = new \Imagick();
$text->newImage(750, 1206, 'none');

$text->setImageFormat('png');

$draw1 = new \ImagickDraw();
$draw1->setFont(__DIR__ . '/../../../Public/tianyangzhongqiu/ziti/fanzhengdahei.ttf'); //設置中文字體 可以解決中文亂碼問題
/*$draw->setTextAlignment(1);*///1 從文字的左下方開始計算的 2 從文字中下來計算 3 從文字右下來計算 默認為1
$xingzuocolor = $this->getxingzuocolor($xingzuo);
$draw1->setFillColor(new \ImagickPixel($xingzuocolor));
$draw1->setFontSize(27);
$draw1->setTextAlignment(1);
$nickName = '啦啊';
$wenziinfo = $this->getwenzinfo($nickName);

$wzallkd = $wenziinfo['wzallkd'];
$wzallkdlist = $wenziinfo['wzallkdlist'];
$perzifulist = $wenziinfo['perzifulist'];

$wenzizuobiao = (750 - $wzallkd) / 2;

foreach ($wzallkdlist as $k => $v) {
$wenzizuobiao += $v;

$draw1->annotation($wenzizuobiao, 240, $perzifulist[$k]);
}

$draw1->annotation(167, 290, $chengji);

$text->drawImage($draw1);
</pre>

ps:就是先設置寬度 然后打字 就這樣文字寬度我來定 就不會出錯了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM