文章目錄
- 一、 GD2簡介
- 1、 驗證碼(實際上是一個img)
- 二、 GD2庫使用步驟
- 2.1添加擴展
- 2.2修改php配置文件
- 2.3重啟服務
- 三、 GD2里面的常用方法
- 3.1 imagecreate
- 3.2 imagecolorallocate
- 3.3 imagefill
- 3.4 輸出圖像資源
- 3.5創建真彩畫布
- 3.6在圖像中寫文字
- 3.6.1imagettftext
- 3.6.2imagestring
- 3.7在圖像中寫橫線
- 3.8在圖像中畫矩形
- 3.9在圖像中畫弧度
- 四、 驗證碼案例
- 4.1驗證碼第一版
- 4.2回顧生成四位隨機數
- 4.3驗證碼第二版
- 4.4點擊按鈕切換圖片
- 4.5點擊按鈕切換驗證碼
- 五、 水印圖
一、 GD2簡介
php語言本身沒辦法直接操作圖片,但是需要安裝一些擴展庫,有很多,但是常用的是GD2庫。
GD2庫實際上主要用在下面幾個方面:
1、 驗證碼(實際上是一個img)
美食杰的注冊頁
2、 水印圖
3、 縮略圖
二、 GD2庫使用步驟
2.1添加擴展
我們的phpstudy集成環境下是默認安裝了php_gd2.dll文件,如果沒有自己百度搜索一下,把下載的dll文件放在你的對應版本的ext目錄下。
2.2修改php配置文件
我們直接在目錄下找到配置文件雙擊打開
或者通過phpstudy打開
按住ctrl+f搜索extension=php_gd2.dll文件,把前面的分號去掉
2.3重啟服務
三、 GD2里面的常用方法
3.1 imagecreate
imagecreate(寬,高)是新建一個基于調色板的圖像,本質上就是創建一個畫布。默認是透明色
3.2 imagecolorallocate
imagecolorallocate(畫布資源,red,gren,blue);
注意紅綠藍是RGB的色值,每一個取值范圍是0-255
3.3 imagefill
imagefill(畫布資源,x軸坐標,用軸坐標,填充的顏色)
注意圖像的左上角默認是0,0點
3.4 輸出圖像資源
imagepng()是輸出png格式圖像到瀏覽器
imagejpeg()是輸出jpeg格式圖像到瀏覽器
imagegif()是輸出gif格式圖像到瀏覽器
如果直接輸出是亂碼
因為瀏覽器默認是解析成html標簽,不識別圖像,所以加上header頭識別
3.5創建真彩畫布
imagecreatetruecolor(寬,高)創建一個真彩的圖像資源,默認是黑色的
imagepng可以設置兩個參數
如果imagepng()設置了一個參數是把圖像資源直接在瀏覽器輸出,如果設置了第二個參數代表把圖片保存成自己定義的文件名。
3.6在圖像中寫文字
3.6.1imagettftext
imagettftext — 用 TrueType 字體向圖像寫入文本
我們在自己的計算機c盤/windows/fonts/里面有各種內置的字體
我們隨意復制一個文件放在自己的項目文件夾下面
顯示效果如下:
這個方法也可以輸出中文
3.6.2imagestring
imagestring — 水平地畫一行字符串,輸中文會亂碼,只能輸出字符。
這個方法字符的左上角為0,0點,不用設置字體格式,默認使用內置字體
總結如下:
1、
imagettftext不僅能輸出英文字符還能輸出中文
imagestring只能輸出英文,如果是中文是解析后的亂碼
2、imagettftext是文字的左小角為0,0點。
imagestring文字的左上角為0,0點
4、 imagettftext等加入字體文件格式,imagestring使用默認字體
3.7在圖像中寫橫線
imageline(圖像資源,開始點的x坐標,開始點的y坐標,結束點的x坐標,結束點的y坐標,線條顏色)
3.8在圖像中畫矩形
imagerectangle(圖像資源,左上角的x和y坐標,右下角的x和y坐標,矩形顏色);
3.9在圖像中畫弧度
參數說明如下:
4.0 imagecreatefrompng/jpeg/gif
4.2getimagesize
getimagesize()是返回的關于圖像大小以及類型相關信息的數組
第一個參數:寬
第二個參數:高
第三個參數:給出的是圖像的類型,返回的是數字,其中1 = GIF,2 = JPG,3 = PNG
最后一個參數:是圖像類型
4.2imagecopy
imagecopy(目標圖像資源,源圖像資源,放在目標位置的x和y坐標,原圖截取開始的x和y坐標,截取原圖的寬度和高度)
四、 驗證碼案例
4.1驗證碼第一版
4.2回顧生成四位隨機數
rand(開始數字,結束數字)會隨機生成一個開始到結束范圍內的數字
在這里插入圖片描述
4.3驗證碼第二版
生成效果如下:
然后我們生成隨機的顏色,修改如下:
4.4點擊按鈕切換圖片
4.5點擊按鈕切換驗證碼
因為瀏覽器有一個緩存機制,就是訪問同一個文件的時候就不會去給服務器發請求,從緩存里讀取,所以導致我們點擊按鈕的沒有作用,還是訪問的以前緩存的那個圖片,我們采取拼接參數的形式
所以我們更改代碼如下: