【PHP】解析PHP的GD庫

官方文檔:http://php.net/manual/en/book.image.phpphp

1.GD庫簡介

PHP能夠建立和操做多種不一樣格式的圖像文件。PHP提供了一些內置的圖像信息函數,也可使用GD函數庫建立和處理已有的函數庫。目前GD2庫支持GIF、JPEG、PNG和WBMP等格式。此外還支持一些FreeType、Type1等字體庫。
首先要在PHP的配置文件(php.ini)中打開php_gd2的擴展

若是有其餘的集成軟件,能夠直接勾選上php_gd2。筆者使用的wampserver,就能夠直接勾選上php的php_gd2擴展:


一般狀況下,php_gd2擴展默認是開啓的。

經過gd_info()得到有關GD的詳細信息html

<?php
$gdinfoarr = gd_info();
foreach($gdinfoarr as $e => $v){
   echo $e." = ".$v."<br/>";
}
?>

輸出結果:app

GD Version = bundled (2.1.0 compatible)
FreeType Support = 1
FreeType Linkage = with freetype
T1Lib Support =
GIF Read Support = 1
GIF Create Support = 1
JPEG Support = 1
PNG Support = 1
WBMP Support = 1
XPM Support = 1
XBM Support = 1
JIS-mapped Japanese Font Support = 

其中1表明支持的功能,空表明不支持。從上面也能夠看到GD庫的版本信息。函數

2.GD庫圖像的繪製步驟

在PHP中建立一個圖像一般應該完成4步:
1.建立一個背景圖像(也叫畫布),之後的操做都是基於該圖像
2.在背景上繪製圖像信息
3.輸出圖像
4.釋放資源

字體

<?php       
    //1. 建立畫布
    $im = imageCreateTrueColor(200, 200);              //創建空白背景
    $white = imageColorAllocate ($im, 255, 255, 255);    //設置繪圖顏色
    $blue  = imageColorAllocate ($im, 0, 0, 64);
    //2. 開始繪畫
    imageFill($im, 0, 0, $blue);                        //繪製背景
    imageLine($im, 0, 0, 200, 200, $white);            //畫線
    imageString($im, 4, 50, 150, 'Sales', $white);      //添加字串
    //3. 輸出圖像
    header('Content-type: image/png');
    imagePng ($im);     //以 PNG 格式將圖像輸出
    //4. 釋放資源
    imageDestroy($im);  
?>

輸出結果以下:
spa

3.繪製驗證碼功能

上面咱們已經了知道了GD庫的基本使用,下面顯示圖片驗證碼功能

login.html 文件.net

<html>
    <head>
        <title> login </title>
    </head>
    <body>
        <div>
            <div><span>username:</span><span><input type="text"/></span></div>
            <div><span>password:</span><span><input type="password"></span></div>
            <div>
                <span>verify:</span>
                <span><input type="text"/></span>
                <span><img alt="img" src="verifycode.php"></span>
            </div>
            <div>
                <input type="submit" value="submit">
            </div>
        </div>
    </body>
</html>

verifycode.php 文件code

<?php
//建立畫布
$im = imageCreateTrueColor(80, 40);

//建立畫筆
$red = imageColorAllocate ($im, 255,0,0);
$black = imageColorAllocate ($im, 0, 0, 0);

//將整個畫布鋪爲紅色
imagefill($im, 0, 0, $red);

$verify = "";
do{
    $v = rand(0, 9);
    $verify = $verify.$v;//.表示字符串拼接符,將原有的驗證數字和新的驗證數字拼接起來
}while( strlen($verify) < 4 );

$_SESSION["verifycode"] = $verify;//將值存儲到SESSION變量中

$font = 'arial.ttf';
imagettftext($im, 20, 0, 10,30, $black,$font,$verify);//將驗證碼繪製到畫布上

header('Content-type: image/png');
imagePng ($im);     //以 PNG 格式將圖像輸出

//釋放資源
imageDestroy($im);

而後訪問 http://localhost/Test/login.html
效果圖:
server

這裏的驗證碼很「規矩」,能夠對上面的驗證碼拓展,好比漸變背景,干擾線,多種文字,文字旋轉,不一樣字體 等等。htm

相關文章
相關標籤/搜索