分析:
1、確認gb庫是否正確安裝?沒有報這個方法不存在。
2、imagettftext()必須utf-8編碼,php的整個項目都是utf-8編碼,所以不用太多考慮。如果不是,可以mb_convert_encoding()轉換;
3、檢查字體是否加載正確,寫死了字體路徑,而且換了多個字體(常用的中文字體文件是simsun.ttc和simhei.ttf),還是不行,確認應該不是字體的問題。
然后看到網上有人說:請檢查你在編譯gd庫時是否添加了–enable-gd-jis-conv選項,此選項是為了讓gd庫支持日文編碼的字庫,請取消此選項并重新編譯。
然后我查看了我的php編譯選項,是添加了這個參數,難道要重新編譯?
正當我蛋疼的時候,又看到一篇文章:
$str=mb_convert_encoding('漢字', "html-entities", "utf-8"); //轉成html編碼
例子,具體代碼如下(文件格式為gb2312):
- <?php
- $im = imagecreatefromjpeg('./1.jpg');
- $w = imagesx($im);
- $h = imagesy($im);
- $green = imagecolorallocate($im,50,100,200);
- $str = iconv('gb2312','utf-8','幸福就在身邊');//解決亂碼問題
- imagettftext($im,16,0,200,100,$green,'./simhei.ttf',$str);
- header("content-type: image/jpeg");
- imagejpeg($im);
- imagedestroy($im);
- ?>
例子2:
轉碼方法不復雜,不要緊張。將“我愛你”這幾個字粘貼在記事本中,然后另存為utf8格式的文本,也就是unicode utf-8格式,隨便起一名字保存,就叫做test.txt吧。下一步:用一個16進制的文本編輯器打開test.txt,你會看到里面的文字格式形如:chr(0xE6)等等,復制這些格式的代碼,然后看下面的函數,相信你已經看懂了。
- <?php
- //在PHP的圖形函數中輸出“我愛你”
- $cur_count=chr(0xE6).chr(0x88).chr(0x91).chr(0xE7).chr(0x88).chr(0xB1).chr(0xE4).chr(0xBD).chr(0xA0).chr(0xEF).chr(0xBC).chr(0x81) ;
- Header("Content-type: image/gif");
- $im = imagecreate(156,116);
- $black = ImageColorAllocate($im, 0,0,0);
- $blue = ImageColorAllocate($im, 0,0,255);
- $white = ImageColorAllocate($im, 255,255,255);
- $yellow = ImageColorAllocate($im, 255,255,0);
- ImageTTFText($im,20,0,4,40,$yellow,"simkai.ttf",$cur_count);//我這里選擇的本地字體是楷體,必須選擇系統字庫中存在的字體才行
- ImageGif($im); //Vevb.com
- ImageDestroy($im);
- ?>
新聞熱點
疑難解答