php给图片添加字串出现乱码

benettzhang 2015-04-19 04:35:15
<?php

function addImageStr($imgName,$str){

//$str = iconv('gbk', 'utf-8', $str);

$arr = list( $width, $height, $type) = getimagesize($imgName);

$types = array(1=>'gif', 2=>'jpeg', 3=>'png');

$createImage = 'imagecreatefrom'.$types[$type];

$img = $createImage($imgName);

$color = imagecolorallocate($img, 255, 0, 0);

$x = ($width -imagefontwidth(24)*strlen($str))/2;

$y = ($height - imagefontheight(24))/2;

imagestring($img, 24, $x, $y, $str, $color);

$imagePut = 'image'.$types[$type];

$imagePut($img, 'new_'.$imgName);

imagedestroy($img);
}

addImageStr('test.png',"我饿了");
?>
php文件是utf-8的
...全文
429 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
misaka去年夏天 2015-05-07
  • 打赏
  • 举报
回复
今天学到了验证码,那个imageffttext函数的参数里的字体参数需要指定字体,字体可以在windows下的字体里复制到当前文件夹,然后在参数里指定字体文件的相对路径。。试试行不行(⊙_⊙)
benettzhang 2015-04-20
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
因为只有 imagettftext 才能画 ttf 字符(汉字)

imagestring 只能画内置的点阵字符

可是还是有问题我用这个函数写验证码类的时候会出现方框
misaka去年夏天 2015-04-20
  • 打赏
  • 举报
回复
引用 12 楼 zp_00000 的回复:
[quote=引用 11 楼 misakaqunianxiatian 的回复:] 我刚才的那段话其实就是改浏览器的字符集。。你是在<?php 之后就添加的那段话么 如果不行的话我也不知道了。学的东西还少 _(:з」∠)_
我也是,这个问题一直没解决很头疼,一起加油吧[/quote] 嗯,一起加油吧。。..
benettzhang 2015-04-20
  • 打赏
  • 举报
回复
引用 11 楼 misakaqunianxiatian 的回复:
我刚才的那段话其实就是改浏览器的字符集。。你是在<?php 之后就添加的那段话么 如果不行的话我也不知道了。学的东西还少 _(:з」∠)_
我也是,这个问题一直没解决很头疼,一起加油吧
misaka去年夏天 2015-04-20
  • 打赏
  • 举报
回复
我刚才的那段话其实就是改浏览器的字符集。。你是在<?php 之后就添加的那段话么 如果不行的话我也不知道了。学的东西还少 _(:з」∠)_
benettzhang 2015-04-20
  • 打赏
  • 举报
回复
引用 8 楼 misakaqunianxiatian 的回复:
试一下在写函数之前 ,加一句这个行不行 header('Content-type:text/html;charset=utf8');
我加了之后还是乱码。。。不知道怎么处理了
xuzuning 2015-04-20
  • 打赏
  • 举报
回复
对,要有字体文件 windows 的话就在 windows\fonts 中,linux 的话可能需要下载
misaka去年夏天 2015-04-20
  • 打赏
  • 举报
回复
试一下在写函数之前 ,加一句这个行不行 header('Content-type:text/html;charset=utf8');
benettzhang 2015-04-20
  • 打赏
  • 举报
回复
private function imageCode_cn(){
			$data = "阿啊哀唉挨矮爱碍安岸按案暗昂袄傲奥八巴扒
			吧疤拔把坝爸罢霸白百柏摆败拜班般斑搬板版
			办半伴扮拌瓣帮绑榜膀傍棒包胞雹宝饱保堡报
			抱暴爆杯悲碑北贝备背倍被辈奔本笨蹦逼鼻比
			彼笔鄙币必毕闭毙弊碧蔽壁避臂边编鞭扁便变
			遍辨辩辫标表别宾滨冰兵丙柄饼并病拨波玻剥
			脖菠播伯驳泊博搏膊薄卜补捕不布步怖部擦猜
			才材财裁采彩睬踩菜参餐残蚕惭惨灿仓苍舱藏
			操槽草册侧厕测策层叉插查茶察岔差拆柴馋缠
			产铲颤昌长肠尝偿常厂场敞畅倡唱抄钞超朝潮
			吵炒车扯彻撤尘臣沉辰陈晨闯衬称趁撑成呈承
			池匙尺齿耻斥赤翅充冲诚城乘惩程秤吃驰迟持
			臭出初除厨锄础储楚处虫崇抽仇绸愁稠筹酬丑
			触畜川穿传船喘串疮窗床创吹炊垂锤春纯唇蠢
			聪丛凑粗促醋窜催摧脆词慈辞磁此次刺从匆葱
			大呆代带待怠贷袋逮戴翠村存寸错曾搭达答打
			蛋当挡党荡档刀叨导岛丹单担耽胆旦但诞弹淡
			倒蹈到悼盗道稻得德的灯登等凳低堤滴敌笛底
			抵地弟帝递第颠典点电店垫殿叼雕吊钓调掉爹
			跌叠蝶丁叮盯钉顶订定丢东冬董懂动冻栋洞都
			斗抖陡豆逗督毒读独堵赌杜肚度渡端短段断缎
			朵躲惰鹅蛾额恶饿恩儿锻堆队对吨蹲盾顿多夺
			而耳二发乏伐罚阀法帆番翻凡烦繁反返犯泛饭
			范贩方坊芳防妨房仿访纺放飞非肥匪废沸肺费
			分吩纷芬坟粉份奋愤粪丰风封疯峰锋蜂逢缝讽
			凤奉佛否夫肤伏扶服俘浮符幅福抚府斧俯辅腐
			父付妇负附咐复赴副傅富腹覆该改盖溉概干甘
			纲缸钢港杠高膏糕搞稿杆肝竿秆赶敢感冈刚岗
			葛隔个各给根跟更耕工告哥胳鸽割搁歌阁革格
			弓公功攻供宫恭躬巩共贡勾沟钩狗构购够估姑
			孤辜古谷股骨鼓固故顾瓜刮挂乖拐怪关观官冠
			馆管贯惯灌罐光广归龟规轨鬼柜贵桂跪滚棍锅
			国果裹过哈孩海害含寒喊汉汗旱航毫豪好号浩
			贺黑痕很狠恨恒横衡轰耗喝禾合何和河核荷盒
			哄烘红宏洪虹喉猴吼后厚候乎呼忽狐胡壶湖糊
			化划画话怀槐坏欢还环蝴虎互户护花华哗滑猾
			晃谎灰恢挥辉回悔汇会缓幻唤换患荒慌皇黄煌
			活火伙或货获祸惑击饥绘贿惠毁慧昏婚浑魂混
			吉级即极急疾集籍几己圾机肌鸡迹积基绩激及
			既济继寄加夹佳家嘉甲挤脊计记纪忌技际剂季
			间肩艰兼监煎拣俭茧捡价驾架假嫁稼奸尖坚歼
			健舰渐践鉴键箭江姜将减剪检简见件建剑荐贱
			郊娇浇骄胶椒焦蕉角狡浆僵疆讲奖桨匠降酱交
			皆接揭街节劫杰洁结捷绞饺脚搅缴叫轿较教阶
			今斤金津筋仅紧谨锦尽截竭姐解介戒届界借巾
			晶睛精井颈景警净径竞劲近进晋浸禁京经茎惊
			酒旧救就舅居拘鞠局菊竟敬境静镜纠究揪九久
			橘举矩句巨拒具俱剧惧据距锯聚捐卷倦绢决绝
			觉掘嚼军君均菌俊卡开凯慨刊堪砍看康糠扛抗
			炕考烤靠科棵颗壳咳可渴克刻客课肯垦恳坑空
			孔恐控口扣寇枯哭苦库裤酷夸垮挎跨块快宽款
			筐狂况旷矿框亏葵愧昆捆困扩括阔垃拉啦喇腊
			懒烂滥郎狼廊朗浪捞劳蜡辣来赖兰拦栏蓝篮览
			累冷厘梨狸离犁鹂璃黎牢老姥涝乐勒雷垒泪类
			励例隶栗粒俩连帘怜莲礼李里理力历厉立丽利
			梁粮粱两亮谅辆量辽疗联廉镰脸练炼恋链良凉
			临淋伶灵岭铃陵零龄领僚了料列劣烈猎裂邻林
			笼聋隆垄拢楼搂漏露芦令另溜刘流留榴柳六龙
			旅屡律虑率绿卵乱掠略炉虏鲁陆录鹿滤碌路驴
			落妈麻马码蚂骂吗埋买轮论罗萝锣箩骡螺络骆
			忙芒盲茫猫毛矛茅茂冒迈麦卖脉蛮馒瞒满慢漫
			美妹门闷们萌盟猛蒙孟贸帽貌么没眉梅煤霉每
			棉免勉面苗描秒妙庙灭梦迷谜米眯秘密蜜眠绵
			摩磨魔抹末沫莫漠墨默蔑民敏名明鸣命摸模膜
			暮拿哪内那纳乃奶耐男谋某母亩木目牧墓幕慕
			尼泥你逆年念娘酿鸟尿南难囊挠恼脑闹呢嫩能
			奴努怒女暖挪欧偶辟趴捏您宁凝牛扭纽农浓弄
			乓旁胖抛炮袍跑泡陪培爬怕拍牌派攀盘判叛盼
			碰批披劈皮疲脾匹僻片赔佩配喷盆朋棚蓬膨捧
			乒平评凭苹瓶萍坡泼婆偏篇骗漂飘票撇拼贫品
			谱七妻戚期欺漆齐其奇迫破魄剖仆扑铺葡朴普
			汽砌器恰洽千迁牵铅谦骑棋旗乞企岂启起气弃
			腔强墙抢悄敲锹乔侨桥签前钱钳潜浅遣欠歉枪
			禽勤青轻倾清蜻情晴顷瞧巧切茄且窃亲侵芹琴
			屈趋渠取去趣圈全权泉请庆穷丘秋求球区曲驱
			群然燃染嚷壤让饶扰绕拳犬劝券缺却雀确鹊裙
			日绒荣容熔融柔揉肉如惹热人仁忍刃认任扔仍
			乳辱入软锐瑞润若弱撒洒塞赛三伞散桑嗓丧扫
			删衫闪陕扇善伤商裳晌嫂色森杀沙纱傻筛晒山
			哨舌蛇舍设社射涉摄申赏上尚捎梢烧稍勺少绍
			慎升生声牲胜绳省圣盛伸身深神沈审婶肾甚渗
			石时识实拾蚀食史使始剩尸失师诗施狮湿十什
			视试饰室是柿适逝释誓驶士氏世市示式事侍势
			书叔殊梳疏舒输蔬熟暑收手守首寿受兽售授瘦
			耍衰摔甩帅拴双霜爽谁鼠属薯术束述树竖数刷";

			//$data = iconv('gbk', 'utf-8', $data);
			$strdb = str_split($data);
			
			for ($i=0; $i <$this->num; $i++) { 
				$index = mt_rand(0,count($strdb));
			    $this->code .= $strdb[$index];
				$color = imagecolorallocate($this->image, mt_rand(0,125), mt_rand(0,125), mt_rand(0,125));
				imagettftext($this->image, mt_rand(20,24), mt_rand(-60,60), (40*$i+20), mt_rand(30,35), $color, $this->fontCharacter, $strdb[$index]);
			}

		}
benettzhang 2015-04-20
  • 打赏
  • 举报
回复
引用 3 楼 fdipzone 的回复:
[quote=引用 2 楼 zp_00000 的回复:] [quote=引用 1 楼 xuzuning 的回复:] 中文要用 imagettftext 写,并且要是 utf-8 编码的[/quote额,为什么要用imagettftext,很困惑
因为要指定字体。[/quote]就是说写中文字符的时候要指定字体?
xuzuning 2015-04-19
  • 打赏
  • 举报
回复
因为只有 imagettftext 才能画 ttf 字符(汉字) imagestring 只能画内置的点阵字符
傲雪星枫 2015-04-19
  • 打赏
  • 举报
回复
引用 2 楼 zp_00000 的回复:
[quote=引用 1 楼 xuzuning 的回复:] 中文要用 imagettftext 写,并且要是 utf-8 编码的[/quote额,为什么要用imagettftext,很困惑
因为要指定字体。
benettzhang 2015-04-19
  • 打赏
  • 举报
回复
[quote=引用 1 楼 xuzuning 的回复:] 中文要用 imagettftext 写,并且要是 utf-8 编码的[/quote额,为什么要用imagettftext,很困惑
xuzuning 2015-04-19
  • 打赏
  • 举报
回复
中文要用 imagettftext 写,并且要是 utf-8 编码的

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧