首页 > 开发 > PHP > 正文

图象函数中的中文显示

2024-05-04 23:01:03
字体:
来源:转载
供稿:网友
  • 网站运营seo文章大全
  • 提供全面的站长运营经验及seo技术!
  • 把gb码转换到utf8,php中ttf支持utf8编码的非ascii字符输出.在分析这段代码之后,发现可以实现中文与ascii混合输出图象,这样在我们操作图象函数时可以更方便.
    代码如下:
    <?

    function gb2utf8($gb)
    {
    if(!trim($gb))
    return $gb;
    $filename="gb2312.txt";
    $tmp=file($filename);
    $codetable=array();
    while(list($key,$value)=each($tmp))
    $codetable[hexdec(substr($value,0,6))]=substr($value,7,6);

    $utf8="";
    while($gb)
    {
    if (ord(substr($gb,0,1))>127)
    {
    $this=substr($gb,0,2);
    $gb=substr($gb,2,strlen($gb)-2);
    $utf8.=u2utf8(hexdec($codetable[hexdec(bin2hex($this))-0x8080]));
    }
    else
    {
    $this=substr($gb,0,1);
    $gb=substr($gb,1,strlen($gb)-1);
    $utf8.=u2utf8($this);
    }
    }

    /*$ret="";
    for($i=0;$i<strlen($utf8);$i+=3)
    $ret.=chr(substr($utf8,$i,3));

    return $ret;*/

    return $utf8;
    }
    function u2utf8($c)
    {
    /*for($i=0;$i<count($c);$i++)*/
    $str="";
    if ($c < 0x80) {
    $str.=$c;
    }
    else if ($c < 0x800) {
    $str.=chr(0xc0 | $c>>6);
    $str.=chr(0x80 | $c & 0x3f);
    }
    else if ($c < 0x10000) {
    $str.=chr(0xe0 | $c>>12);
    $str.=chr(0x80 | $c>>6 & 0x3f);
    $str.=chr(0x80 | $c & 0x3f);
    }
    else if ($c < 0x200000) {
    $str.=chr(0xf0 | $c>>18);
    $str.=chr(0x80 | $c>>12 & 0x3f);
    $str.=chr(0x80 | $c>>6 & 0x3f);
    $str.=chr(0x80 | $c & 0x3f);
    }
    return $str;
    }
    ?>


    --------------------------------------------
    <?
    header ("content-type: image/jpeg");
    $im = imagecreate (800, 400);
    $black = imagecolorallocate ($im, 0, 0, 0);
    $white = imagecolorallocate ($im, 255, 255, 255);
    include("gb2utf8.php");
    $str=gb2utf8("aaa中过32434");
    imagettftext ($im, 90, 10, 110, 300, $white, "/usr/share/fonts/default/truetype/simsun.ttc",
    $str);

    imagejpeg ($im);
    imagedestroy ($im);

    ?>
    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表