日常整理PHP中簡單的圖形處理(經典)_php執行個體

來源:互聯網
上載者:User

1.載入GD庫

  GD庫是一個開放的動態建立映像、原始碼公開的函數庫,可以從官方網站http://www.boutell.com/gd處下載。目前,GD庫支援GIF、PNG、JPEG、WBMP和XBM等多種映像格式,用於對映像的處理。

  GD庫在PHP 5中是預設安裝的,但要啟用GD庫,必須修改php.ini檔案。將該檔案中的“;extension=php_gd2.dll”選項前的分號“;”刪除,儲存修改後的檔案並重新啟動Apache伺服器即可生效。

2.建立一個簡單的映像

  使用GD2函數庫可以實現各種圖形映像的處理。建立畫布是使用GD2函數庫來建立映像的第一步,無論建立什麼樣的映像,首先都需要建立一個畫布,其他動作都將在這個畫布上完成。在GD2函數庫中建立畫布,可以通過imagecreate()函數實現。

  使用imagecreate()函數建立一個寬度為200像素,高度為60像素的畫布,並設定畫布顏色RGB(225,66,159),最後輸出一個GIF格式的映像,代碼如下:

<?php$im = imagecreate(200,60);           //建立一個畫布$white = imagecolorallocate($im, 225,66,159);   //設定畫布的背景顏色為淺綠色imagegif($im);                //輸出映像?>

3.使用GD2函數在照片上添加文字

  PHP中的GD庫支援中文,但必須要以UTF-8格式的參數來進行傳遞,如果使用imageString()函數直接繪製中文字串就會顯示亂碼,這是因為GD2對中文只能接收UTF-8編碼格式,並且預設使用英文字型,所以要輸出中文字串,必須對中文字串進行轉碼,並設定中文字元使用的字型。否則,輸出的只能是亂碼。

使用imageTTFText()函數將文字“這是一個測試”輸出到映像中,代碼如下:

<?phpheader("content-type:image/jpeg");    //定義輸出為映像類型$im=imagecreatefromjpeg("images/photo.jpg");    //載入照片$textcolor=imagecolorallocate($im,56,73,136);//設定字型顏色為藍色,值為RGB顏色值$fnt="c:/windows/fonts/simhei.ttf";   //定義字型$motto=iconv("gb2312","utf-8","這是一個測試");   //定義輸出字型串imageTTFText($im,220,0,480,340,$textcolor,$fnt,$motto);   //寫TTF文字到圖中imagejpeg($im);    //建立JPEG圖形imagedestroy($im);  //結束圖形,釋放記憶體空間?>

4.PHP產生驗證碼

建立一個checks.php檔案在檔案中使用GD2函數建立一個4位的驗證碼,並將產生的驗證碼儲存到session中:

<?phpsession_start();header("content-type:image/png");    //設定建立映像的格式$image_width=70;           //設定映像寬度$image_height=18;           //設定映像高度srand(microtime()*100000);        //設定隨機數的種子for($i=0;$i<4;$i++){         //迴圈輸出一個4位的隨機數  $new_number.=dechex(rand(0,15));}$_SESSION[check_checks]=$new_number;  //將擷取的隨機數驗證碼寫入到SESSION變數中   $num_image=imagecreate($image_width,$image_height); //建立一個畫布imagecolorallocate($num_image,255,255,255);     //設定畫布的顏色for($i=0;$i<strlen($_SESSION[check_checks]);$i++){ //迴圈讀取SESSION變數中的驗證碼  $font=mt_rand(3,5);                //設定隨機的字型  $x=mt_rand(1,8)+$image_width*$i/4;        //設定隨機字元所在位置的X座標  $y=mt_rand(1,$image_height/4);          //設定隨機字元所在位置的Y座標  $color=imagecolorallocate($num_image,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200));    //設定字元的顏色  imagestring($num_image,$font,$x,$y,$_SESSION[check_checks][$i],$color);           //水平輸出字元}imagepng($num_image);         //產生PNG格式的映像imagedestroy($num_image);       //釋放映像資源?>

建立一個使用者登入的表單並調用checks.php在表單中輸出映像的內容:

<?phpsession_start();if($_POST["Submit"]!=""){$checks=$_POST["checks"];if($checks==""){echo "<script> alert('驗證碼不可為空');window.location.href='index.php';</script>";}if($checks==$_SESSION[check_checks]){  echo "<script> alert('使用者登入成功!');window.location.href='index.php';</script>";}else{  echo "<script> alert('您輸入的驗證碼不正確!');window.location.href='index.php';</script>";}}?><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>rand函數的應用</title><style type="text/css"><!--.STYLE1 {  font-size: 12px;  color: #FFFFFF;  font-weight: bold;}.style2 {font-weight: bold; font-size: 12px;}--></style></head><body><form name="form" method="post" action=""> <table width="1003" border="0" cellspacing="0" cellpadding="0">  <tr>   <td width="168" height="169" background="images/index_01.gif"> </td>   <td width="685" background="images/index_02.gif"> </td>   <td width="150" background="images/index_03.gif"> </td>  </tr>  <tr>   <td width="168" height="311" background="images/index_04.gif"> </td>   <td background="images/index_05.gif"><table width="675" height="169" border="0" cellpadding="0" cellspacing="0">    <tr>     <td height="43" align="center" valign="baseline"> </td>     <td align="center" valign="middle"> </td>     <td align="center" valign="baseline"> </td>    </tr>    <tr>     <td width="382" height="24" align="center" valign="baseline"> </td>     <td width="207" height="24" valign="middle"><span class="style2">使用者名稱</span><span class="STYLE1">      <input name="txt_user" id="txt_user" style="height:20px " size="10">       </span></td>     <td width="86" height="24" align="center" valign="baseline"> </td>    </tr>    <tr>     <td height="24" align="center" valign="baseline"> </td>     <td height="24" valign="middle"><span class="style2">密碼</span><span class="STYLE1">     <input name="txt_pwd" type="password" id="txt_pwd" style="FONT-SIZE: 9pt; height:20px" size="10">     </span></td>     <td height="24" align="center" valign="baseline"> </td>    </tr>    <tr>     <td height="24" align="center" valign="baseline"> </td>     <td height="24" valign="middle"><span class="style2">驗證碼</span><span class="STYLE1">     <input name="checks" size="6" style="height:20px ">     <img src="checks.php" width="70" height="18" border="0" align="bottom"></span>  </td>     <td height="24" align="center" valign="baseline"> </td>    </tr>    <tr>     <td height="40" align="center" valign="baseline"> </td>     <td align="center" valign="baseline">    <input type="submit" name="Submit" value="登入"></td>     <td align="center" valign="baseline"> </td>    </tr>   </table></td>   <td background="images/index_06.gif"> </td>  </tr>  <tr>   <td height="100"> </td>   <td> </td>   <td> </td>  </tr> </table></form></body></html>

以上內容是小編給大家分享的有關php中簡單的圖形處理,希望大家喜歡。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.