让PHP发出中文图像 - 我爱贝贝 - 金东浩官方网站 - welcome to old.bbmy.net

让PHP发出中文图像 [金东浩官方网站版权所有]

2006年12月31日 | Category: » | by: 贝爸 | 本文包含金东浩让PHP发出中文图像照片

gb2utf8.php 文件如下:


<?
Class GB2UTF8
{
  var $gb;          // 待转换的GB2312字符串
  var $utf8;        // 转换后的UTF8字符串
   var $CodeTable;   // 转换过程中使用的GB2312代码文件数组
   var $ErrorMsg;    // 转换过程之中的错误讯息

  function GB2UTF8($InStr="")
  {
     $this->gb=$InStr;
     $this->SetGb2312(

     ($this->gb=="")?0:$this->Convert(

  }

  function SetGb2312($InStr="gb2312.txt")
  {                  // 设置gb2312代码文件,默认为gb2312.txt
     $this->ErrorMsg="";
     $tmp=@file($InStr

       if (!$tmp) {
           $this->ErrorMsg="No GB2312";
           return false;
           }
     $this->CodeTable=array(

     while(list($key,$value)=each($tmp)) {
        $this->CodeTable[hexdec(substr($value,0,6))]=substr($value,7,6

     }
  }

  function Convert()
  {                   // 转换GB2312字符串到UTF8字符串,需预先设置$gb
     $this->utf8="";
     if(!trim($this->gb) || $this->ErrorMsg!="") {
        return ($this->utf8=$this->ErrorMsg

     }
       $str=$this->gb;

     while($str) {
        if (ord(substr($str,0,1))>127)
           {
              $tmp=substr($str,0,2

              $str=substr($str,2,strlen($str)

              $tmp=$this->U2UTF8(hexdec($this->CodeTable[hexdec(bin2hex($tmp))-0x8080])

              for($i=0;$i<strlen ($tmp
$i+=3)
              $this->utf8.=chr(substr($tmp,$i,3)

           }
        else
           {
              $tmp=substr($str,0,1

              $str=substr($str,1,strlen($str)

              $this->utf8.=$tmp;
           }
        }
     return $this->utf8;
  }


  function U2UTF8($InStr)
  {
     for($i=0;$i<count($InStr
$i++)
     $str="";
     if ($InStr < 0x80) {
        $str.=ord($InStr

     }
     else if ($InStr < 0x800) {
        $str.=(0xC0 | $InStr>>6

        $str.=(0x80 | $InStr & 0x3F

     }
     else if ($InStr < 0x10000) {
        $str.=(0xE0 | $InStr>>12

        $str.=(0x80 | $InStr>>6 & 0x3F

        $str.=(0x80 | $InStr & 0x3F

     }
     else if ($InStr < 0x200000) {
        $str.=(0xF0 | $InStr>>18

        $str.=(0x80 | $InStr>>12 & 0x3F

        $str.=(0x80 | $InStr>>6 & 0x3F

        $str.=(0x80 | $InStr & 0x3F

     }
     return $str;
  }
}
?>



测试文件如下:
代码:


<?php
Header("Content-type: image/png"

$im = imagecreate(400,300

$black = ImageColorAllocate($im, 0,0,0

$white = ImageColorAllocate($im, 184,44,6

include("gb2utf8.php"

$obj=new gb2utf8(

$obj->gb="123abc中国456def测试正确";
$obj->Convert(

ImageTTFText($im, 20, 0, 5, 50, $white, "SIMKAI.TTF", $obj->utf8

ImagePNG($im

ImageDestroy($im

?>



说明:
需要正确设置font文件,请先确认可以使用font直接(不使用gb2utf8)输出英文。
gb2312.txt请在网上查找

本文来自 我爱贝贝[www.bbmy.net]-金东浩官方网站,如若转载注明出处。


金东浩博客随机日志
金东浩博客之贝贝快要自已走路了
贝贝快要自已走路
金东浩博客之小贝发现的城堡
小贝发现的城堡
金东浩博客之小游银河公园
小游银河公园
金东浩博客之小熊贝贝
小熊贝贝
金东浩博客之最近小贝感冒了
最近小贝感冒了
金东浩博客之我是一个粉刷匠
我是一个粉刷匠
金东浩博客之我们家的睡宝宝
我们家的睡宝宝
金东浩博客之爱吃的小贝
爱吃的小贝
金东浩博客之我的音乐我做主
我的音乐我做主
金东浩博客之玩具箱
玩具箱
金东浩博客之骑小鹿
骑小鹿
金东浩博客之认真的学习
认真的学习
金东浩博客之好喝的酸奶
好喝的酸奶
金东浩博客之四月没有放进日记的图片
四月没有放进日记
金东浩博客之回忆
回忆
金东浩博客之学会走路
学会走路
金东浩博客之临睡前的一瓶奶
临睡前的一瓶奶
金东浩博客之摇篮曲
摇篮曲

金东浩日记Tags:
金东浩日记评论: 0 | 金东浩日记引用: 0 | 金东浩日记阅读: 2940
发表评论
昵称 [注册]        网址
密码 游客无需密码     电邮
打开HTML 打开UBB 打开表情 隐藏 记住我