PHP GD库水印自动换行无法显示函数文字

php中文网
发布: 2016-06-23 13:10:27
原创
1463人浏览过

在网上找的一些代码拼凑而成的。但最后一步不显示的总不是自己的文本内容,代码如下:

<?php  if(isset($_get['str']) and $_get['str']!=""){  $im = imagecreatefromjpeg('gd.jpg');  $font_size = 12;  $fontname = '33.ttf';  $black = imagecolorallocate($im,0,0,0);  $str = $_get['str'] ;    function chararray($str,$charset="gbk"){        $re['utf-8']   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";        $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";        $re['gbk']    = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";        $re['big5']   = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";        preg_match_all($re[$charset], $str, $match);        return $match;    }    /* 返回一个字符串在图片中所占的宽度 */    function charwidth($fontsize,$fontangle,$ttfpath,$char){        $box = @imagettfbbox($fontsize,$fontangle,$ttfpath,$char);        $width = max($box[2], $box[4]) - min($box[0], $box[6]);        return $width;    }        /* 这几个变量分别是 字体大小, 角度, 字体名称, 字符串, 预设宽度, 编码 */    function autowrap($fontsize,$fontangle,$ttfpath,$str,$width,$charset='gbk'){        $_string = "";        $_width = 0;        $temp = chararray($str);        //var_dump($temp);        foreach ($temp[0] as $k=>$v){            $w = charwidth($fontsize,$fontangle,$ttfpath,$v);            $_width += intval($w);            if (($_width > $width) && ($v !== "")){                $_string .= "\n";                $_width = 0;            }            $_string .= $v;            $w = 0;            //echo $v;        }        $_string = mb_convert_encoding($_string, "html-entities","gbk" );        return $_string;    }    $str = autowrap(12,0,'33.ttf','返回一个字符的数组',250);  imagettftext($im,$font_size,0,35,160,$black,$fontname,$str);  header('content-type: image/jpeg');  imagejpeg($im);  imagedestroy($im) ;  } ?>
登录后复制


要怎样把返回一个字符的数组这几个词换成str传递过来的参数呢?谢谢大神

怪兽AI数字人
怪兽AI数字人

数字人短视频创作,数字人直播,实时驱动数字人

怪兽AI数字人 44
查看详情 怪兽AI数字人


回复讨论(解决方案)

能不能把你最后一句话 “要怎样把返回一个字符的数组这几个词换成str传递过来的参数呢?”    写一个例子贴出来,你上面的代码最后一步是指 这个?imagettftext($im,$font_size,0,35,160,$black,$fontname,$str);

能不能把你最后一句话 “要怎样把返回一个字符的数组这几个词换成str传递过来的参数呢?”    写一个例子贴出来,你上面的代码最后一步是指 这个?imagettftext($im,$font_size,0,35,160,$black,$fontname,$str);



我是想把“返回一个字符的数组”那段替换成自己传递过来的函数
就是实现文本自动换行的功能。。。因为是小白只能复制一段代码过来修改
自己把:    $str = autowrap(12,0,'33.ttf','返回一个字符的数组',250); 这段改成    $str = autowrap(12,0,'33.ttf','$_GET['str']',250);
这样后直接不能接收,不知道是语法的问题还是哪的问题,去掉引号又变成了空的。。。不知道哪里出了问题,所以来求解

简单点就是:?str=你好吗你好吗你好吗你好吗你好吗你好吗你好吗    传递过来后在第七八个字之后自动换行水印在图片上

自己改了下,定义了个新函数已经搞定了,谢谢大家

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号