本文實例講述了PHP圖像處理。分享給大家供大家參考,具體如下:
Demo1.php
<?php //一般生成的圖像可以是 png,jpg,gif,bmp //jpeg,wbmp //第一步,設置文件MIME類型,輸出類型 text/html 類型是網頁類型,默認可以不寫 //將輸出類型改成圖像流 header('Content-Type:image/png;'); //第二步,創建一個圖形區域,圖像背景 //有兩種創建方式,資源類型,一般要加上 @ 符號,防止出錯 //imagecreatetruecolor 返回的是一個資源句柄 //這個函數創建了一個圖像的區域,沒有進行填充的時候,背景默認是黑色的 $im = imagecreatetruecolor(200,200); //第三步,有空白圖像區域,繪制顏色,文字叫,線條啊。。。 //填充色換掉,首先要有個顏色填充器 //imagecolorallocate -- 為一幅圖像分配顏色 $blue = imagecolorallocate($im,0,102,255); //將這個 blue 顏色填充到背景上去 //imagefill -- 區域填充 imagefill($im,0,0,$blue); //第四部,在藍色的背景上輸入一些線條,文字等 $white = imagecolorallocate($im,255,255,255); //imageline -- 畫一條線段 imageline($im,0,0,200,200,$white); imageline($im,200,0,0,200,$white); //imagestring -- 水平地畫一行字符串 imagestring($im,5,80,20,'Mr.One',$white); //第五步,輸出最終圖形 //以 PNG 格式將圖像輸出到浏覽器或文件 imagepng($im); //第六步,我要將所有的資源全部清空 imagedestroy($im); ?>
Demo2.php
<?php //src 可以插入各樣類型的圖片 //Demo1.php 其實就是一張 png 圖片 header('Content-Type:text/html; charset=gbk'); echo '<img src="Demo1.php" alt="圖形"/>'; ?>
Demo3.php
<?php //簡單的驗證碼 //隨機數 //為什麼要循環 0-15 之間的數呢? //因為要實現最簡單的字母和數字混搭 //十六進制 0-9 a-f //dechex -- 十進制轉換為十六進制 //創建一個四位的驗證碼 for($i=0;$i<4;$i++){ $nmsg .= dechex(mt_rand(0,15)); } //echo $nmsg; header('Content-Type:image/png;'); $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,5,$nmsg,$white); imagepng($im); imagedestroy($im); ?>
Demo4.php
<?php define('__DIR__',dirname(__FILE__).'\\'); //加載已有的圖像 header('Content-Type:image/png;'); //header('Content-Type:image/jpeg;'); //imagecreatefrompng -- 從 PNG 文件或 URL 新建一圖像 //用 image 載入圖像,是可以編輯圖像 //在載入的圖像中,加入一個小水印 $im = imagecreatefrompng(__DIR__.'ss.png'); //$im = imagecreatefromjpeg('xx.jpg'); $white = imagecolorallocate($im,255,255,255); imagestring($im,5,10,10,'http://www.oneStopWeb.cn',$white); imagepng($im); //imagejpeg($im); imagedestroy($im); ?>
Demo5.php
<?php define('__DIR__',dirname(__FILE__).'\\'); //加載已有的圖像 header('Content-Type:image/png;'); //header('Content-Type:image/jpeg;'); //imagecreatefrompng -- 從 PNG 文件或 URL 新建一圖像 //用 image 載入圖像,是可以編輯圖像 //在載入的圖像中,加入一個小水印 $im = imagecreatefrompng(__DIR__.'ss.png'); //$im = imagecreatefromjpeg('xx.jpg'); $white = imagecolorallocate($im,255,255,255); imagestring($im,5,10,10,'http://www.oneStopWeb.cn',$white); //font 字體還必須支持中文 $font = 'C:\WINDOWS\Fonts\SIMHEI.TTF'; //字體文件 $text = iconv('gbk','utf-8','閱誰問君誦'); //采用系統提供的字體 //第二參數,是字體的大小,第三個參數是旋轉角度,4,5參數是坐標 imagettftext($im,20,10,50,100,$white,$font,$text); imagepng($im); //imagejpeg($im); imagedestroy($im); ?>
Demo6.php
<?php //微縮圖,不但表面的大小改變了,容量也改變了 //是真的改變了,不是表面的縮小 define('__DIR__',dirname(__FILE__).'\\'); header('Content-Type:image/png;'); //getimagesize -- 取得圖像大小 //獲取到了原圖的長度和高度 list($width,$height) = getimagesize(__DIR__.'ss.png'); //將原圖縮放成 40% $_width = $width * 0.4; $_height = $height * 0.4; //創建一個新圖 $im = imagecreatetruecolor($_width,$_height); //下面的工作是,載入原圖,將原圖復制到新圖上去 //載入原圖 $_im = imagecreatefrompng(__DIR__.'ss.png'); //將原圖重新采樣,拷貝到新圖上,最後按 0.4 的比例輸出 //imagecopyresampled -- 重采樣拷貝部分圖像並調整大小 imagecopyresampled($im,$_im,0,0,0,0,$_width,$_height,$width,$height); //將新圖輸出 imagepng($im); //第二個參數不需要,直接 null 過度 //第三個參數,是 0-100 來調節 JPG 的清晰度 //如果是 imagepng,那麼全部都是高清 //imagejpeg($im,null,50); //銷毀 imagedestroy($im); imagedestroy($_im); ?>
更多關於PHP相關內容感興趣的讀者可查看本站專題:《PHP圖形與圖片操作技巧匯總》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php面向對象程序設計入門教程》、《PHP網絡編程技巧總結》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。