有時侯特想在一幅圖片中加入自己的文字,不管是表明所有權,還是為了使圖片更加生動,總之有時這種欲望特別強烈。於是找了一些資料,但是就象平時一樣,沒有什麼特別的驚喜,不是資料看不明白(我懷疑作者本身就沒有試過),就是不能正常執行。不過對這些早有心理准備,於是在殘缺資料的基礎上,又參閱了PHP的幫助文擋,終於成功,費了老鼻子勁了。
在這裡聲明,PHP必須支持GD2函數才可以實現此功能。舉個例子:
<?PHP
$image=imagecreatefromjpeg("test.jpg"); //取得源文件
$colorred=imagecolorallocate($image,255,0,0); //獲得字體顏色
imagestring($image,2,50,5,"my car",$colorred);
//在源文件$image上用$colorred顏色,在x=50,y=5的地方開始用2大小的字體寫上"my car"
imagejpeg($image,"test1.jpg"); //把圖片輸出到test1.jpg
?>
顯示效果如圖:
還不錯吧,代碼看起來也簡單吧,當時我可是做了很多實驗才捉摸出來的,看PHP幫助文檔也真是費勁。
大家注意了,上面的例子寫出的文字用的是默認的字體,如果想用自己的字體,就要用 imagettftext()函數了。如下:
<?PHP
$font="C:\Windows\Fonts\ROCKEB.TTF";$text="my car";
$image=imagecreatefromjpeg("test.jpg");
$colorred=imagecolorallocate($image,255,0,0);
imagettftext($image,6,0,10,10,$colorred,$font,$text);
//在$image上的(10,10)的地方開始用6大小,$font字體,$colorred顏色,從左到右(0),寫上$text
imagejpeg($image,"test2.jpg");
?>
結果如圖:
例子中$font中定義的就是自己的字體,字體可以在Windows\fonts下查找。然後定義好路徑就行了,相關函數其它參數請自己查看PHP幫助文檔吧。
再多說一句,函數 imagecolorallocate($image,255,0,0)中的三個數字是一種顏色的數值。具體可以利用Photoshop來獲得所需顏色的數值。
還有一點,我用imagettftext()函數向圖片上寫漢字一直沒有成功,$font設置成中文字庫後,圖片上什麼也沒有寫上,如果字庫是英文字庫,就寫上了一些亂碼,不知為何。