首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP GD庫實現中文水印完整教程

     編輯:PHP 相關知識

前言

在PHP開發中,使用GD庫為圖片添加中文水印是常見需求。早期版本的GD庫對中文支持較差,直接使用imagestring()輸出中文會產生亂碼。本文詳細介紹如何利用imagettftext()配合iconv()編碼轉換,完美實現中文水印功能。

核心原理

GD庫的imagettftext()函數支持UTF-8編碼的字符串,但PHP腳本常以GB2312編碼保存。因此需要先將中文文本從GB2312轉換為UTF-8,再繪製到圖片上。關鍵步驟如下:

  1. 使用iconv('GB2312', 'UTF-8', $text)進行編碼轉換
  2. 指定系統中存在的TrueType中文字體文件路徑
  3. 調用imagettftext()繪製文字

支持的中文字體

經測試,Windows系統下以下字體均可正常使用:

  • simhei.ttf(黑體)
  • SIMKAI.TTF(楷體)
  • SIMFANG.TTF(仿宋)
  • SIMSUN.TTC(宋體/新宋體)

注意:字體文件路徑需根據實際操作系統環境調整,Linux系統通常需額外安裝中文字體。

完整代碼示例

<?php
header("Content-type: image/png");
$im = imagecreate(400, 300);
$gray = imagecolorallocate($im, 235, 235, 235);
$pink = imagecolorallocate($im, 255, 128, 255);

// 字體路徑請根據實際環境修改
$fontfile = "C:/Windows/Fonts/simhei.ttf";

$str = iconv("GB2312", "UTF-8", "中文水印測試!");
imagettftext($im, 30, 0, 50, 140, $pink, $fontfile, $str);

imagepng($im);
imagedestroy($im);
?>

常見問題排查

  • 亂碼:確認腳本編碼與iconv源編碼一致
  • 字體找不到:使用絕對路徑,Linux下需確認字體已安裝
  • 顯示方框:字體文件不支持該字符,嘗試更換字體

進階應用建議

實際項目中建議將水印功能封裝為類,支持自定義字體大小、顏色、位置、透明度等參數,並添加錯誤處理機制,提高代碼復用性與健壯性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved