PHP GD庫是PHP開發中一個非常重要的擴展庫。它包含大量的函數,可以幫助我們在PHP中處理圖像和生成新的圖像。利用這個功能強大的擴展庫,我們可以實現一些很酷的效果,比如圖片縮放、裁剪和加水印等。在這篇文章中,我們將一些常用的GD庫函數進行詳細的介紹,并給出相應的示例。
一、創建圖像:
header("Content-Type:image/png"); $img=imagecreate(200,200); $color_red=imagecolorallocate($img,255,0,0); imagefilledrectangle($img,0,0,200,200,$color_red);//填充矩形 imagepng($img); imagedestroy($img);
以上代碼實現了一個紅色矩形的生成。其中imagecreate()是創建一個新的圖像資源,指定寬和高;imagecolorallocate()是設置矩形顏色;imagefilledrectangle()是填充矩形區域;imagepng()輸出圖像;imagedestroy()銷毀圖像資源。
二、圖片縮放:
header("Content-Type:image/jpeg"); $src_img=imagecreatefromjpeg("my_pic.jpg"); $width=imagesx($src_img)*0.5; $height=imagesy($src_img)*0.5; $dst_img=imagecreatetruecolor($width,$height); imagecopyresampled($dst_img,$src_img,0,0,0,0,$width,$height,imagesx($src_img),imagesy($src_img)); imagejpeg($dst_img); imagedestroy($dst_img); imagedestroy($src_img);
以上代碼將原始圖像縮小一半并輸出。其中imagecreatefromjpeg()是從指定的JPEG文件中創建一個新的圖像資源;imagesx()和imagesy()是獲取圖像資源寬度和高度;imagecopyresampled()是將縮小的圖像拷貝到新的圖像資源中,采用高質量方法;imagejpeg()輸出圖像;imagedestroy()銷毀圖像資源。
三、圖片水印:
header("Content-Type:image/png"); $src_img=imagecreatefrompng("my_pic.png"); $watermark_img=imagecreatefrompng("watermark.png"); $watermark_width=imagesx($watermark_img); $watermark_height=imagesy($watermark_img); $src_width=imagesx($src_img); $src_height=imagesy($src_img); $dst_x=$src_width-$watermark_width-10;//水印x坐標 $dst_y=$src_height-$watermark_height-10;//水印y坐標 imagecopy($src_img,$watermark_img,$dst_x,$dst_y,0,0,$watermark_width,$watermark_height); imagepng($src_img); imagedestroy($src_img); imagedestroy($watermark_img);
以上代碼實現了往圖片上添加一個水印圖像。其中imagecreatefrompng()是從指定的PNG文件中創建一個新的圖像資源;imagesx()和imagesy()是獲取圖像資源寬度和高度;imagecopy()是將水印圖像拷貝到原始圖像中,并指定位置、大小等參數;imagepng()輸出圖像;imagedestroy()銷毀圖像資源。
四、驗證碼:
header("Content-Type:image/png"); $img=imagecreatetruecolor(120,40); $bgcolor=imagecolorallocate($img,100,100,100); imagefill($img,0,0,$bgcolor); $code=""; $char="abcdefghijklnmopqrstuvwxyz0123456789"; for($i=0;$i<4;$i++){ $font_size=rand(20,25); $font_color=imagecolorallocate($img,rand(0,120),rand(0,120),rand(0,120)); $char_index=rand(0,strlen($char)-1); $char_txt=$char[$char_index]; $code.=$char_txt; $x=20+$i*20; $y=rand(25,35); imagestring($img,$font_size,$x,$y,$char_txt,$font_color); } session_start(); $_SESSION["code"]=$code; imagepng($img); imagedestroy($img);
以上代碼為生成驗證碼的示例。其中imagefill()是使用指定顏色填充圖像資源;imagecolorallocate()是設置字體顏色;strlen()是獲取字符串長度;rand()是隨機數函數;imagestring()是向圖像資源中寫入字符串,并設置字體大小、坐標等參數;session_start()是開啟session,用于保存驗證碼。
總之,PHP GD庫函數非常強大,可以實現很多圖像處理的需求。以上只是一些常用的方法,我們可以根據具體情況進行更多的嘗試和實踐。