程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> GD庫函數實現中文水印

GD庫函數實現中文水印

編輯:關於PHP編程

  $im = imagecreatetruecolor(100,100);//新建一個真彩色圖像

  $white = imagecolorallocate($im,255,235,255);//為一幅圖像分配顏色,這一點和我的設計常識有區別..我從來沒想過,在繪畫時,要先給指定的圖像標識分配顏色..這個函數經常和imagefill函數搞混.

  imagefill($im,0,0,$white); //區域填充

  $black = imagecolorallocate($im,250,50,50);//為一幅圖像分配顏色

  imagerectangle($im,5,5,50,50,$black);//繪制一個矩形

  header("Content-type: image/jpeg"); //發送標頭,配合imagejpeg直接在浏覽器中輸出圖像。

  imagejpeg($im,ImageName,100);//輸出一個像圖,定名與質量

  imagedestroy($im);//釋放與 image 關聯的內存。image 是由圖像創建函數返回的圖像標識符

  ?>

  利用 GD 庫實現"中文水印"

  發表時間: 2006-12-29 20:50 作者: hy0kl 來源: PHPChina 開源社區門戶

  此帖首先特別鳴謝 lmhllr 仁兄,沒有他的指導偶此刻可能還在搜資料中 ing......

  首先申明本人是新手,對於 GD 庫是一知半解,不到之處還請大家見諒吧.^_^

  自從在網上看到 php + GD 庫能實現圖片加"中文水印",開始了 GD 庫的學習.

  於是參照著下載的資料改了一個腳本,能實現 php繪圖,當時很是竊喜了 N 久.(見笑!)

  之後就用 imagestring() 函數在圖像上實現了英文的"水印";但當偶嘗試著用它加"中文水印"時發,打印出來的全是亂碼.

  於是又開始踏上解決亂碼的路途.

  許久沒有得到滿意的答案,就放棄了.

  最近,發現 lmhllr 仁兄的個性簽名十分特別,詢問之後終於知道原因了: GD 庫對中文支持的不是很好, imagettftext() 函數的字符集若是 UTF-8 ,則可以直接傳遞.

  換言之,必需將 gb2312 的字符集轉換成 UTF-8 的字符.可以使用 iconv() 函數來實現.偶的珍藏版 PHP 手冊居然查不到本函數, ,不過可以到 php 官方網站查看 http://cn.php.net/manual/zh/ref.iconv.php ,只可惜並不是所有函數都有中文翻譯,偶的 E 文不好,只能看著 lmhllr 仁兄的例子腳本猜了.此函數將 gb2312 的字符轉換成 UTF-8 的字符.然後再調用函數,實現加"中文水印".

  偶在偶的機子測試後得出:GD 支持的中文字體有 simhei.ttf(黑體) , SIMKAI.TTF(楷體) , SIMFANG.TTF(仿宋) ,SIMSUN.TTC(宋體&新宋體)等了.當然,腳本裡面只能代入英文名稱了,诶,誰叫操作系統不是咱寫的呢.

  希望本帖能給和偶一樣遭遇的同志們一點啟發.^_^

  下面是一個簡單的測試腳本了.

  [php]

  Header("Content-type: image/png"); /*通知浏覽器,要輸出圖像*/

  $im = imagecreate(400 , 300); /*定義圖像的大小*/

  $gray = ImageColorAllocate($im , 235 , 235 , 235);

  $pink = ImageColorAllocate($im, 255 , 128 , 255);

  /*

  $fontfile = "C:WINDOWSFontsSIMHEI.TTF";

  不好意思,這句老是粘上後一提交就丟了,不知道是怎麼回事,想測試的朋友們將注釋去了現測試吧

  */

  /* $fontfile 字體的路徑,視操作系統而定,可以是 simhei.ttf(黑體) , SIMKAI.TTF(楷體) , SIMFANG.TTF(仿宋) ,SIMSUN.TTC(宋體&新宋體) 等 GD 支持的中文字體*/

  $str = iconv(GB2312,UTF-8,中文水印!!!); /*將 gb2312 的字符集轉換成 UTF-8 的字符*/

  ImageTTFText($im, 30, 0, 50, 140, $pink , $fontfile , $str);

  /* 加入中文水印 */

  Imagepng($im);

  ImageDestroy($im);

  ?>[/php]

  OK ,收工,但願這是本人的第一個有質量的水帖.

  下面是本例子的效果了.再次對 lmhllr 表示由衷的感謝!!!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved