在web應用中經常會用到生成圖片這一功能,在php教程 中創建圖片需要gd庫的支援才能創建圖形,有了這個圖形功能,我們就可以方便的生成縮圖,驗證碼,給圖片加浮水印等。
在php中要安裝gd庫才能正常運行創建圖片功能,方法如下,在win系統,找到php.ini把
;extension=php_gd2.dll前面的";" 去了,重起apache就OK了。
下面我們一看實例
php的gd庫可以生成多種影像檔,如gif,png,jpg,wbmp,xpm等,下面來看一個生成正方形的檔。
<?php
$height = 300;
$width = 300;
創建背景圖
$im = ImageCreateTrueColor($width, $height);
分配顏色
$white = ImageColorAllocate ($im, 255, 255, 255);
$blue = ImageColorAllocate ($im, 0, 0, 64);
繪製顏色至圖像中
ImageFill($im, 0, 0, $blue);
繪製字串:Hello,PHP
ImageString($im, 10, 100, 120, 'Hello,PHP', $white);
輸出圖像,定義頭
Header ('Content-type: image/png');
將圖像發送至瀏覽器
ImagePng($im);
清除資源
ImageDestroy($im);
?>
查看結果只要流覽php檔就可以了,如果要圖像調用<img src=a.php />
實例二,使用基本函數創建圖片imagecreate()
resource imagescreate(int x,inty)imagedestroy 是放圖片所占記憶體空間
int ingaedestroy( image)imagecopy()
int imagecopy( dst_im,sr_im,int x,int y,int x,int y,)
下面來看實例
<?php
header("Content-type: image/jpeg");
載入圖像
$imagen1 = imagecreatefromjpeg("imagen1.jpg");
$imagen2 = imagecreatefromjpeg("imagen2.jpg");
複製圖像
imagecopy($imagen1,$imagen2,0,0,0,0,200,150);
輸出jpeg圖像
imagejpeg($imagen1);
釋放記憶體
imagedestroy($imagen2);
imagedestroy($imagen1);
?>
實例三在圖片上圖片文字
在這個功能上我們會用到imageCreateFromJpeg這個函數是,把來自檔或者form的圖片重新創建一次,
resource imageCrrateFromJpge(string,imageName);
imageCrateFromPng();
resource imageCrrateFromJpge(string,imageName);
看實例
<?php
//PNG格式影像處理函數
function Loadpng ($imgname) {
$im = @ImageCreateFromPNG ($imgname);
if (!$im) { //載入圖像失敗
$im = ImageCreate (400, 30);
$bgc = ImageColorAllocate ($im, 255, 255, 255);
$tc = ImageColorAllocate ($im, 0, 0, 0);
ImageFilledRectangle ($im, 0, 0, 150, 30, $bgc);
ImageString($im, 4, 5, 5, "Error loading: $imgname", $tc);
}
return $im;
}
$imgPng=Loadpng("./karte.png");
/* 輸出圖像到瀏覽器 */
header("Content-type: image/png");
imagePng($imgPng);
?>
<?php
$img = imageCreate(100, 100);
$black = imageColorAllocate($img, 0, 0, 0);
$white = imageColorAllocate($img, 255, 255, 255);
$orange = imageColorAllocate($img, 255, 128, 64);
$lightorange = imageColorAllocate($img, 255, 220, 164);
imageFilledRectangle($img, 0, 0, 100, 100, $white);
imageRectangle($img, 0, 0, 99, 99, $black);
imageRectangle($img, 5, 5, 94, 94, $black);
$points = Array(12,10, 20,15,15,20);
$nump = (int) count($points)/2;
imagePolygon($img, $points, $nump, $orange);
imageLine($img, 17, 18, 27, 33, $orange);
imageLine($img, 18, 18, 28, 33, $lightorange);
imageLine($img, 19, 18, 29, 33, $orange);
imageRectangle($img, 15, 33, 80, 75, $orange);
imageFill($img, 14, 14, $lightorange);
imageFill($img, 20, 40, $lightorange);
imageString ($img, 2, 20, 40, "I'm a PHP", $black);
imageString ($img, 2, 30, 55, "image", $black);
imagePNG($img);
?>
在圖像上寫文字imagechar imageloadfont imagefontheight, imagefontwidth函數
<?php
$imagen = imagecreate(350,76);
$bg = imagecolorallocate($imagen,255,255,255);
$negro = imagecolorallocate($imagen,0,0,0);
/*
獲取內置字體寬度和高度
*/
$w1 = imagefontwidth(1); 字體1字體寬度
$h1 = imagefontheight(1); 字體1字體高度
$w2 = imagefontwidth(2); 字體2字體寬度
$h2 = imagefontheight(2); 字體2字體高度
$w3 = imagefontwidth(3); 字體3字體寬度
$h3 = imagefontheight(3); 字體3字體高度
$w4 = imagefontwidth(4); 字體4字體寬度
$h4 = imagefontheight(4); 字體4字體高度
$w5 = imagefontwidth(5); 字體5字體寬度