作者liaosankai (低温烘焙)
看板PHP
标题Re: [请益] GD2 合成文字问题
时间Tue Jul 9 08:18:33 2013
※ 引述《chan15 (ChaN)》之铭言:
: demo: http://goo.gl/LTyj1
: code: http://pastie.org/private/tx2jxjapwsh2vqzvswxkq
: 目前客户有一个需求就是类似漫画上字功能
: 中文字体我选用了微软正黑体,不知道为什麽选细明体字数越多间距会越宽
: 因为会有字体大小的选项,而 Y 座标似乎不是以顶点当作开头
: 所以请教问一下他的 Y 座标怎麽算出来才能让不同 pt 的字出现的顶点位置相同呢
: ※ 编辑: chan15 来自: 1.34.239.151 (07/08 18:08)
: 推 liaosankai:我建议的作法是,先将文字图转出为一张"tmp.png" 07/09 07:44
: → liaosankai:再透过浮水印的方法合成两张图片 07/09 07:44
抱歉,我刚看了你的 code 发现你的确也是合成的。
我想你主要的问题,应该是你忘记先计算文字的画布大小
你可以透过下面的方法,取得文字预计会占的空间大小。
// 计算文字大小
$rect = imagettfbbox($size, 0, $font, $text);
$minX = min(array($rect[0], $rect[2], $rect[4], $rect[6]));
$maxX = max(array($rect[0], $rect[2], $rect[4], $rect[6]));
$minY = min(array($rect[1], $rect[3], $rect[5], $rect[7]));
$maxY = max(array($rect[1], $rect[3], $rect[5], $rect[7]));
$box = array(
"left" => abs($minX) ,
"top" => abs($minY),
"width" => $maxX - $minX,
"height" => $maxY - $minY
);
现在你可以使用 $box 资讯,再对你所要合成的图片调整位置。
详细可以参考官方的说明:
http://goo.gl/gpDWj
--
欢迎来我的网志看看
@
http://blog.liaosankai.com
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.203.54.193