技术饭
php实现文字换行以及thinphp5.1水印自定义位置
最近要做图片生成图片水印与文字水印,但是遇到了一些小问题,tp5.1的图片类库只提供了9个位置,那图片水印如何自定义位置?文字水印,字数过多,水印超出了图片如何解决?
1、文字自动换行
/**
* [getbrtext 处理文字换行]
* @param integer $width [限制宽度]
* @param integer $size [字体大小]
* @param integer $angle [文字倾斜角度]
* @param string $font [字体文件]
* @param string $text [文本]
*/
function getbrtext($width = 200, $size = 16, $angle = 0, $font = './static/images/1.ttf', $text = '') {
//判断是否超出范围
$str = "";
for ($i = 0; $i < mb_strlen($text); $i++) {
$letter[] = mb_substr($text, $i, 1);
}
foreach ($letter as $l) {
$teststr = $str . " " . $l;
$testbox = imagettfbbox($size, $angle, $font, $teststr);
// 判断拼接后的字符串是否超过预设的宽度。超出宽度添加换行
if (($testbox[2] > $width) && ($str !== "")) {
$str .= "\n";
}
$str .= $l;
}
//返回
return $str;
}
2、水印自定义位置
//图片水印
$location = array(100,200);
$image->open($images[$i])->water($water, $location, 100)->save($images[$i]);
//文字水印
$location = array(310,615);
$image->open('./Upload/haibao.jpg')->text($str, './Upload/simhei.ttf', 25, '#000',$location , 100)->save($path);
参考资料:
文明上网理性发言!