• 4290阅读
  • 2回复

为何imagettftext输不出中文,却能输出英文 [复制链接]

上一主题 下一主题
离线xutao111222
 
只看楼主 倒序阅读 使用道具 楼主   发表于: 2014-07-09

<?php
    $im = imagecreatetruecolor(400, 30);              //创建400x300像素大小的画布
    $white = imagecolorallocate($im, 255, 255, 255);    //创建白色
    $grey = imagecolorallocate($im, 128, 128, 128);     //创建灰色
    $black = imagecolorallocate($im, 0, 0, 0);          //创建黑色
    imagefilledrectangle($im, 0, 0, 399, 29, $white);     //输出一个使用白色填充的矩形作为背景

        //如果有中文输出,需要将其转码,转换为UTF-8的字符串才可以直接传递
    $text=iconv("GB2312", "UTF-8", "LAMP兄弟连--无兄弟,不编程!");
    $font = 'simsun.ttc';          //指定字体,将系统中与simsum.ttc对应的字体复制到当前目录下
    imagettftext($im, 20, 0, 12, 21, $grey, $font, $text);   //输出一个灰色的字符串作为阴影
    imagettftext($im, 20, 0, 10, 20, $black, $font, $text);  //在阴影之上输出一个黑色的字符串

    header("Content-type: image/png");               //通知浏览器将输出格式为PNG的图像
    imagepng($im);                               //向浏览器中输出PNG格式的图像
    imagedestroy($im);                            //销毁资源,释放内存占用的空间
?>
最终的显示结果 LAMP
是什么原因 兄弟连--无兄弟,不编程输不出来
兄弟连招贤令
 
离线day29
只看该作者 沙发   发表于: 2014-07-11
你看一下 simsun.ttc 这个文件是否可以输出中文。  建议你从操作系统里C:Windows/Fonts下的字体文件中 挑选出一个可以输出中文的字体,然后复制到你的相应的项目路径下测试。如果可以输出中文,说明代码是OK的。更换下字体文件就好了。
兄弟连招贤令
 
离线snowdown
只看该作者 板凳   发表于: 2015-04-25
我在学这里的时候本地测试也碰到过问题,检查font库,修改php.ini,换成mb_convert_encoding,最后发现直接不用转码就可以正常输出中文,尚不太清楚这是GD库或PHP的升级还是其它原因
兄弟连招贤令
 
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个