关于php函数的GD库中imagettftext乱码等问题

1,使用imagettftext给图片加中文得到的图像在IE中显示乱码

网上有种说法是解释该乱码是日文乱码,属于php.ini的配置问题,是参数“–enable-gd-jis-conv”的问题,但这个问题是linux才有的,作者说的只是linux下遇到问题,windows下不会是这种原因,事实上,windows下的php.ini也没有这个参数。

另外还有php.ini中 default_charset = “GB2321″这个设置,用于设置默认输出字体的编码。因为字体使用imagettftext之前会进行转换,而如果是是使用iconv函数转换需要指定原来字符编码,但如果是用mb_convert_encoding函数进行转换编码的话,不需要对目标字符的编码进行指定,使用了mb_convert_encoding函数确实避免了这个问题。


2,提示“Warning: imagettftext() [function.imagettftext]: Invalid font filename in……

提示字体库路径无效,如果代码中指定$font=”simhei.ttf”,那么对应就需要在字体库C:\WINDOWS\Fonts中找到simhei.ttf这个文件,并且复制到和php文件在同一目录,当然用绝对路径也是可以的。同时由于函数是imagettftext,使用的字体库必须是tt格式的,也就是后缀必须ttf。


3,无汉字显示

由于某些原因,有的php环境中,汉字并不需要转码,代码中$content=iconv(“GB2312″,”UTF-8″,$content)”$content=mb_convert_encoding($content,”UTF-8″)必须删除才可以正常添加水印,具体原因不详,我个人出现的就是这种情况,删除转码部分的代码后就可以正常显示。


4,各种方法都无法解决

由于php生成图像需要释放才可以重新执行,所以一般刷新看不出修改代码后的效果,必须重新打开php页面重新运行php才可以看到代码修改后的真实效果,这一点与php一般的文本处理不同。一般的文本处理,修改后台php代码后,只须刷新页面就可以看到代码修改后的真实效果,而对于图像的处理而言,大多需要重新打开php页面重新解析才可以看到代码修改后的真实效果,刷新往往只是看到以前错误效果的缓存,这点不注意很容易造成代码调试的困境,找不到正确的代码修改方向。

浏览量(116) | 此条目发表在lamp专区, 原百度博客文章, 计算机分类目录。将固定链接加入收藏夹。