GD庫是用來處理圖片的。使用GD庫,首先在php.ini中開啟GD擴充套件
extension=php_gd2.dll
開啟以後就可以使用image開頭的函數了
步驟
<?php
$img=imagecreate(200,100); //建立圖片
//var_dump($img); //resource(2) of type (gd)
imagecolorallocate($img,255,0,0); //給圖片分配第一個顏色,預設是背景色
//操作一:顯示圖片
/*
//告知瀏覽器用jpg格式顯示
header('content-type:image/jpeg');
//顯示圖片
imagejpeg($img); //用jpg格式顯示圖片
*/
//操作二:儲存圖片(不需要設定header頭)
imagejpeg($img,'./tu.jpg');
多學一招
imagepng():將圖片輸出為png格式
imagegif():將圖片輸出為gif格式
小結:
給圖片分配的第一個顏色自動填充成背景色,如果要更換背景色需要手動的填充顏色
<?php
$img=imagecreate(200,100); //建立圖片資源
$color=imagecolorallocate($img,200,200,200);
//更改背景色
switch(rand(1,100)%3) {
case 0:
$color=imagecolorallocate($img,255,0,0); //顏色的索引編號
break;
case 1:
$color=imagecolorallocate($img,0,255,0);
break;
default:
$color=imagecolorallocate($img,0,0,255);
}
//填充顏色
imagefill($img,0,0,$color);
//顯示圖片
header('content-type:image/png');
imagepng($img);
防止暴力破解
建立一個圖片,在圖片上寫上一串隨機字串
實現步驟:
imagestring(圖片資源,內建字型,起始點x,起始點y,字串,顏色編號)
難點:字串居中
<?php
//第一步:建立隨機字串
//1.1 建立字元陣列
$all_array=array_merge(range('a','z'),range('A','Z'),range(0,9)); //所有字元陣列
$div_array=['1','l','0','o','O','I']; //去除容易混淆的字元
$array=array_diff($all_array,$div_array); //剩餘的字元陣列
unset($all_array,$div_array); //銷燬不需要使用的陣列
//1.2 隨機獲取4個字元
$index=array_rand($array,4); //隨機取4個字元,返回字元下標,按先後順序排列
shuffle($index); //打亂字元
//1.3 通過下標拼接字串
$code='';
foreach($index as $i){
$code.=$array[$i];
}
//第二步:建立畫布
$img=imagecreate(150,30);
imagecolorallocate($img,255,0,0); //分配背景色
$color=imagecolorallocate($img,255,255,255); //分配前景色
//第三步:將字串寫到畫布上
$font=5; //內建5號字型
$x=(imagesx($img)-imagefontwidth($font)*strlen($code))/2;
$y=(imagesy($img)-imagefontheight($font))/2;
imagestring($img,$font,$x,$y,$code,$color);
//顯示驗證碼
header('content-type:image/gif');
imagegif($img);
小結:
執行結果