技术饭

php实现文字换行以及thinphp5.1水印自定义位置

copylian    0 评论    266 浏览    2020.03.19

最近要做图片生成图片水印与文字水印,但是遇到了一些小问题,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);

参考资料:

https://www.wlyc.cn/post-161.html

https://www.jianshu.com/p/4248401cb6ba

CopyLian
感谢你的支持,我会继续努力!
扫码打赏,感谢您的支持!

文明上网理性发言!

  • 还没有评论,沙发等你来抢