2.imagestring函数显示中文乱码
来源:互联网 发布:软件外包项目管理制度 编辑:程序博客网 时间:2024/06/10 21:48
在学到给图片打水印时,使用了PHP内置的GD扩展函数库,视频教程用的imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col )函数,在实际应用中发现该函数无法正常显示中文水印,显示中文乱码。
2.解决过程
通过查询官网PHP手册,imagestring:水平地画一行字符串,imagestring() 用
col
颜色将字符串s
画到image
所代表的图像的x
,y
坐标处(这是字符串左上角坐标,整幅图像的左上角为 0,0)。如果font
是 1,2,3,4 或 5,则使用内置字体。
该函数的第二个参数$font是字体参数,但官方只说明了该值设置为1-5的话使用内置字体,而通过测试发现所谓的1-5内置字体都不能正常显示中文。而且官方文档并没有说明能否使用1-5之外的其他值和其他字体文件,测试发现当把该参数设定为其他字体文件时无法正常使用。
网上查询相关内容,发现大多数情况,不能显示中文都是因为GD2库本身没有中文字体引起的,所以要指定字体来显示所输出的字符串。如果要在图片上输出中文,应该使用imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )函数。该函数的官方说明为:用 TrueType 字体向图像写入文本
该函数的第二个参数也为字体文件,应该指向一个ttf格式的字体文件,通过测试发现可以正常显示中文。$font 为该字体文件路径,当字体件放在该php文件同级目录下时即为字体文件名。
另外在PHP手册中发现还有一个imagefttext (resource
$image
,float$size
,float$angle
,int$x
,int$y
,int$color
,string$fontfile
,string$text
[,array$extrainfo
] )t函数,该函数的官方说明为:使用 FreeType 2 字体将文本写入图像,十分类似与上面的imagettftext函数。只是引用的字体文件类型不同,所以maybe用这个函数也可以显示中文。不过懒得去试了。。。感兴趣的可以试试。
偶然发现在Ubuntu系统下,将用到的字体文件放在该php同级目录下,$font 为该文件名字时发现该函数无法正常生效,通过查询错误日志发现imagettftext(): Could not find/open font,通过百度查询了解到,在Linux系统中,仅将$font设为文件名是不行的,还要明确路径,如'./xxx.ttf'(相对路径)或'/usr/share/fonts/xxx.ttf'(绝对路径)。测试发现可以正常显示。
3.总结:
imagestring几乎无法正常显示中文,也许有其他方法吧。不过推荐使用imagettftext,简单方便,只需引入一个字体文件即可。
imagettftext函数的$font参数在window系统中只需设置为文件名即会在当前目录下去寻找该字体文件,但在linux系统中还要指明路径即 ./ 。
- 2.imagestring函数显示中文乱码
- imagestring不支持中文,改用imagettftext
- 使用Javascript中的alert()函数显示中文乱码
- glassfish 中文显示乱码
- MySQL 中文显示乱码
- MySQL 中文显示乱码
- MySQL 中文显示乱码
- MySQL 中文显示乱码
- FCKeditor显示中文乱码
- MySQL 中文显示乱码
- MySQL 中文显示乱码
- MySQL 中文显示乱码
- putty中文显示乱码
- Qt中文显示乱码
- MySQL 中文显示乱码
- MySQL 中文显示乱码
- MySQL 中文显示乱码
- MySQL 中文显示乱码
- Animation & Property Animation 使用
- JavaIO基础详解
- 幂等
- WebSocket 示例
- webSocket 入门示例demo (tomcat8),最简单demo
- 2.imagestring函数显示中文乱码
- Codeforces 675C Money Transfers【贪心】
- Git自动补全
- LinkedList源码解析
- 关于指向类成员函数的函数指针
- HTML标签 map area的使用
- Linux那些事儿之我是Sysfs(6)文件系统
- 奋斗吧,程序员——第三十八章 旧时茅店社林边,路转溪头忽见
- spring MVC拦截器介绍