第十四章 處理影象

水之原發表於2014-04-23

 

學習要點:
1.建立影象
2.簡單小案例

 

      在PHP5 中,動態圖象的處理要比以前容易得多。PHP5 在php.ini 檔案中包含了GD 擴
展包,只需去掉GD 擴充套件包的相應註釋就可以正常使用了。PHP5 包含的GD 庫正是升級的
GD2 庫,其中包含支援真彩影象處理的一些有用的JPG 功能。
      一般生成的圖形,通過PHP 的文件格式存放,但可以通過HTML 的圖片插入方式SRC
來直接獲取動態圖形。比如,驗證碼、水印、微縮圖等。

 

一.建立影象

建立影象的一般流程:
1).設定標頭,告訴瀏覽器你要生成的MIME 型別。
2).建立一個影象區域,以後的操作都將基於此影象區域。
3).在空白影象區域繪製填充背景。
4).在背景上繪製圖形輪廓輸入文字。
5).輸出最終圖形。
6).清除所有資源。
7).其他頁面呼叫影象。

 

設定標頭指定MIME 輸出型別

<?php
header('Content-Type: image/png');
?>

 

建立一個空白的影象區域

<?php
$im = imagecreatetruecolor(200,200);
?>

 

在空白影象區域繪製填充背景

<?php
$blue = imagecolorallocate($im,0,102,255);
imagefill($im,0,0,$blue);
?>

 

在背景上繪製圖形輪廓輸入文字

<?php
$white = imagecolorallocate($im,255,255,255);
imageline($im,0,0,200,200,$white);
imageline($im,200,0,0,200,$white);
imagestring($im, 5, 80, 20, "Mr.Lee", $white);
?>

 

輸出最終圖形

<?php
imagepng($im);
?>

 

清除所有資源

<?php
imagedestroy($im);
?>

 

其他頁面呼叫建立的圖形

<img src="Demo4.php" alt="PHP 建立的圖片" />

 

二.簡單小案例

簡單驗證碼

<?php
header('Content-type: image/png');
for($Tmpa=0;$Tmpa<4;$Tmpa++){
    $nmsg.=dechex(rand(0,15));
}
$im = imagecreatetruecolor(75,25);
$blue = imagecolorallocate($im,0,102,255);
$white = imagecolorallocate($im,255,255,255);
imagefill($im,0,0,$blue);
imagestring($im,5,20,4,$nmsg,$white);
imagepng($im);
imagedestroy($im);
?>

 

載入已有的影象

<?php
header('Content-Type:image/png');
define('__DIR__',dirname(__FILE__).'\\');
$im = imagecreatefrompng(__DIR__.'222.png');
$white = imagecolorallocate($im,255,255,255);
imagestring($im,3,5,5,'http://www.yc60.com',$white);
imagepng($im);
imagedestroy($im);
?>

 

載入已有的系統字型

<?php
$text = iconv("gbk","utf-8","李炎恢");
$font = 'C:\WINDOWS\Fonts\SIMHEI.TTF';
imagettftext($im,20,0,30,30,$white,$font,$text);
?>

 

影象微縮

<?php
header('Content-type: image/png');
define('__DIR__',dirname(__FILE__).'\\');
list($width, $height) = getimagesize(__DIR__.'222.png');
$new_width = $width * 0.7;
$new_height = $height * 0.7;
$im2 = imagecreatetruecolor($new_width, $new_height);
$im = imagecreatefrompng(__DIR__.'222.png');
imagecopyresampled($im2, $im, 0, 0, 0, 0,
$new_width, $new_height, $width, $height);
imagepng($im2);
imagedestroy($im);
Imagedestroy($im2);
?>

 

  注:文章出自李炎恢PHP視訊教程,本文僅限交流使用,不得用於商業用途,否則後果自負。

相關文章