溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

GD庫常用函數(shù)

發(fā)布時間:2020-06-03 20:19:55 來源:網(wǎng)絡(luò) 閱讀:635 作者:柯岳ky 欄目:web開發(fā)

01.php

<?php


/*

用windows畫圖板畫圖

1:創(chuàng)建一張畫布,設(shè)定大小



2:創(chuàng)建顏料.(紅,r 綠g  藍(lán)b,三原色組成的. 三原色由弱到強(qiáng)各可以選0-255之間).



3:畫線,寫字,畫圖形,填充等.



4:保存成圖片



5:銷毀畫布



用gd庫來畫圖,仍是以上5個步驟.

*/


// 1:造畫布,以資源形式返回

$im = p_w_picpathcreatetruecolor(300,200);



// 2: 創(chuàng)建顏料

$gray = p_w_picpathcolorallocate($im,100,100,100);


// 3: 填充畫布

p_w_picpathfill($im,0,0,$gray);



// 4: 保存成圖片

p_w_picpathpng($im,'./01.png');


// 5: 銷毀畫布

p_w_picpathdestroy($im);



echo 'ok';



-------------------

02.php

<?php

// gd庫默認(rèn)不開啟,需要打開相關(guān)選項(xiàng)

// 如何檢測gd庫是否已開啟?

print_r(gd_info());

//看到如下類似數(shù)組,可以判斷gd庫是否已開啟

Array

(

    [GD Version] => bundled (2.0.34 compatible) // gd庫版本

    [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] => 

    [XBM Support] => 1

    [JIS-mapped Japanese Font Support] => 

)



-------------------

03.php

<?php

// 第一步:創(chuàng)建畫布


// 1: 直接創(chuàng)建空白畫布,指定寬和高兩個參數(shù)

// 300*200的空白畫布,返回值是資源類型

// 新建的畫布,默認(rèn)底色是純黑色.

/*

$im = p_w_picpathcreatetruecolor(300,200);

p_w_picpathpng($im,'./02.png');

*/


$im=p_w_picpathcreatefromjpeg('./he.jpg');

$blue=p_w_picpathcolorallocate($im,0,0,255);

p_w_picpathline($im,0,0,800,600,$blue);

if(p_w_picpathjpeg($im,'./03.jpg')){

echo 'ok';

}


?>

-------------------

04.php

<?php

$im1=p_w_picpathcreatetruecolor(300,200);

$im2=p_w_picpathcreatetruecolor(600,400);


$blue=p_w_picpathcolorallocate($im1,0,0,255);

$red=p_w_picpathcolorallocate($im2,255,0,0);

?>

-------------------

05.php

<?php

$im=p_w_picpathcreatetruecolor(600,400);

$red=p_w_picpathcolorallocate($im,255,0,0);

p_w_picpathfill($im,0,0,$red);

header('content-type:p_w_picpath/jpeg');

p_w_picpathjpeg($im);


p_w_picpathdestroy($im);

?>

-------------------

06.php

<?php

// 第五步: 銷毀畫布


$im = p_w_picpathcreatetruecolor(300,200);


p_w_picpathdestroy($im);


?>

-------------------

07.php

<?php

/*

p_w_picpathline : 畫線

p_w_picpathstring,p_w_picpathttftext: 寫字

p_w_picpathfill — 區(qū)域填充

p_w_picpathfilledarc — 畫一橢圓弧且填充

p_w_picpathfilledellipse — 畫一橢圓并填充

p_w_picpathfilledpolygon — 畫一多邊形并填充

p_w_picpathfilledrectangle — 畫一矩形并填充


p_w_picpathrectangle :畫一個矩形


p_w_picpathcopy : 復(fù)制圖片

p_w_picpathcopymerge :復(fù)制圖片并合并(可以設(shè)透明度.)


p_w_picpathcopyresampled:合并并調(diào)整大小

*/


?>


-------------------

08.php

<?php

// 畫線的學(xué)習(xí)

/*

bool p_w_picpathline ( resource $p_w_picpath , int $x1 , int $y1 , int $x2 , int $y2 , int $color )

*/


// 1:創(chuàng)建畫布

$im = p_w_picpathcreatefromjpeg('./home.jpg');



// 2:造顏料

$red = p_w_picpathcolorallocate($im,255,0,0);

$blue = p_w_picpathcolorallocate($im,0,0,255);


// 3: 畫線

p_w_picpathline($im,0,0,670,503,$red);

p_w_picpathline($im,0,503,670,0,$blue);


// 4: 輸出

header('content-type: p_w_picpath/jpeg');

p_w_picpathjpeg($im);


// 5: 銷毀

p_w_picpathdestroy($im);

?>


-------------------

09.php

<?php


/*

寫字

bool p_w_picpathstring ( resource $p_w_picpath , int $font , int $x , int $y , string $s , int $col )


resource $p_w_picpath :畫布資源

int $font: 大小(1-5),字體是系統(tǒng)默認(rèn)的,改變不了.


int $x , int $y  : 代表寫的第一個字符的左上角點(diǎn)的坐標(biāo).


string $s: 要寫的內(nèi)容


int $color:顏色


問:能否換行

答:不能.


問:能否寫中文

答:不能.


問:能否指定字體

答:不能

*/




$im = p_w_picpathcreatefromjpeg('./home.jpg');


$blue = p_w_picpathcolorallocate($im,0,0,255);


p_w_picpathstring($im,5,100,100,'welcome to shahe',$blue);


header('content-type: p_w_picpath/jpeg');

p_w_picpathjpeg($im);


-------------------

10.php

<?php


function randName($n = 6) {

        if($n <= 0) {

            return '';

        }

        $str = 'abcdefghijkmnpqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ0123456789';

        $str = substr(str_shuffle($str),0,$n);


        return $str;

    }


// 做驗(yàn)證碼


$im = p_w_picpathcreatetruecolor(80,30);


$gray = p_w_picpathcolorallocate($im,30,30,30);

$red = p_w_picpathcolorallocate($im,255,0,0);


p_w_picpathfill($im,0,0,$gray);


p_w_picpathstring($im,5,5,5,randName(4),$red);


// 輸出

header('content-type: p_w_picpath/jpeg');

p_w_picpathjpeg($im);



-------------------

11.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">

<head>

<title>新建網(wǎng)頁</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<meta name="description" content="" />

<meta name="keywords" content="" />

<script type="text/javascript">

    function chn() {

        var img0 = document.getElementsByTagName('img')[0];

        img0.src = '10.php?id=' + Math.random();

    }

</script>


<style type="text/css">

</style>

</head>

    <body>

        <form>

            驗(yàn)證碼:<input type="text" name="code" /><img src="10.php" />

        </form>

    </body>

</html>

-------------------

12.php

<?php

/*

寫中文

p_w_picpathttftext

需要先提供一個ttf字體庫

array p_w_picpathttftext ( resource $p_w_picpath , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )

*/

$im = p_w_picpathcreatefromjpeg('./home.jpg');


$blue = p_w_picpathcolorallocate($im,0,0,255);


p_w_picpathttftext($im,36,0,100,100,$blue,'./msyh.ttf','昌平水郡,遠(yuǎn)離城鎮(zhèn)喧囂');


header('content-type: p_w_picpath/jpeg');

p_w_picpathjpeg($im);

?>



-------------------

13.php

<?php

/*

// 畫橢圓

在一張畫布定一個橢圓,需要4個數(shù)據(jù)

bool p_w_picpathellipse ( resource $p_w_picpath , int $cx , int $cy , int $w , int $h , int $color )

圓心: cx,cy

寬度: w

高度: h



// 畫矩形

bool p_w_picpathrectangle ( resource $p_w_picpath , int $x1 , int $y1 , int $x2 , int $y2 , int $col )



*/



$im = p_w_picpathcreatetruecolor(400,800);


$gray = p_w_picpathcolorallocate($im,100,100,100);

$blue = p_w_picpathcolorallocate($im,0,0,255);



p_w_picpathfill($im,0,0,$gray);


// 畫橢圓

p_w_picpathellipse($im,200,50,200,100,$blue);


// 畫矩形

p_w_picpathrectangle($im,100,100,300,200,$blue);


// 畫圓形

p_w_picpathellipse($im,200,300,200,200,$blue);


// 輸出

header('content-type: p_w_picpath/jpeg');

p_w_picpathjpeg($im);


-------------------

14.php


<?php


// 圖片的復(fù)制


/*

案例:做一個底版照片的效果

如下:[x]是一張小圖

[x]


利用小圖作一張大圖

{[x]  [x]}

*/


/*

獲取圖片的寬度

p_w_picpathsx()


獲取圖片的高度

p_w_picpathsy()


*/



// 讀取圖片作為畫布資源

$small = p_w_picpathcreatefrompng('./feng.png');


// 判斷大小

$sx = p_w_picpathsx($small); // 小圖的寬

$sy = p_w_picpathsy($small); // 小圖的寬



// 造大圖畫布

$big = p_w_picpathcreatetruecolor(2*$sx + 20,$sy);

$gray = p_w_picpathcolorallocate($big,100,100,100);// 造灰色



// 鋪大圖

p_w_picpathfill($big,0,0,$gray);



// 復(fù)制小圖到大圖上.

/*

bool p_w_picpathcopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )

*/


p_w_picpathcopy($big,$small,0,0,0,0,$sx,$sy);

p_w_picpathcopy($big,$small,$sx+20,0,0,0,$sx,$sy);




// 輸出

header('content-type: p_w_picpath/jpeg');

p_w_picpathjpeg($big);



?>


-------------------

15.php

<?php

// 填充


$im = p_w_picpathcreatetruecolor(400,400);


$gray = p_w_picpathcolorallocate($im,100,100,100);

$blue = p_w_picpathcolorallocate($im,0,0,255);

$red = p_w_picpathcolorallocate($im,255,0,0);

$orange = p_w_picpathcolorallocate($im,248,224,143);


p_w_picpathfill($im,100,100,$gray);


// 畫一個橢圓

p_w_picpathellipse($im,200,200,200,200,$blue);


// 填充橢圓

p_w_picpathfill($im,200,200,$red);



// 畫一個矩形并直接填充.

p_w_picpathfilledrectangle($im,0,100,200,200,$blue);



// 畫一個橢圓并直接填充


p_w_picpathfilledellipse($im,100,80,200,100,$orange);



// 輸出

header('content-type: p_w_picpath/jpeg');

p_w_picpathjpeg($im);

?>



-------------------

16.php

<?php


// 畫一段圓弧并且填充

/*

bool p_w_picpathfilledarc ( resource $p_w_picpath , int $cx , int $cy , int $w , int $h , int $s , int $e , int $color , int $style )


style的說明


PIE:   餅

CHORD: 弦


NOFILL:不填充

EDGED: 有邊的


0 IMG_ARC_PIE 

1 IMG_ARC_CHORD 

2 IMG_ARC_NOFILL 

4 IMG_ARC_EDGED 



0000 (餅/弧)

0100 (填充)

-----

0100 = 4 -->扇形+填充



0001 (弦)

0010 (不填充)

--------

0011 = 3 (直線)


0001 (弦)

0100 (填)  --->三角+填充效果

-----

0101 = 5



0000 (弧)

0010 (不填)

-----

0010  -> 2->一段弧線,但不填.



*/



$im = p_w_picpathcreatetruecolor(400,400);


$gray = p_w_picpathcolorallocate($im,100,100,100);

$blue = p_w_picpathcolorallocate($im,0,0,255);


p_w_picpathfill($im,0,0,$gray);

p_w_picpathfilledarc($im,200,200,200,200,45,135,$blue,2);



header('content-type: p_w_picpath/jpeg');

p_w_picpathjpeg($im);



?>

-------------------

17.php

<?php


// 圖片的復(fù)制


/*

案例:做一個底版照片的效果

如下:[x]是一張小圖

[x]


利用小圖作一張大圖

{[x]  [x]}

*/


/*

獲取圖片的寬度

p_w_picpathsx()


獲取圖片的高度

p_w_picpathsy()


*/



// 讀取圖片作為畫布資源

$small = p_w_picpathcreatefrompng('./feng.png');


// 判斷大小

$sx = p_w_picpathsx($small); // 小圖的寬

$sy = p_w_picpathsy($small); // 小圖的寬



// 造大圖畫布

$big = p_w_picpathcreatetruecolor(2*$sx + 20,$sy);

$gray = p_w_picpathcolorallocate($big,100,100,100);// 造灰色



// 鋪大圖

p_w_picpathfill($big,0,0,$gray);



// 復(fù)制小圖到大圖上.

/*

bool p_w_picpathcopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )

*/


p_w_picpathcopy($big,$small,0,0,0,0,$sx,$sy);

p_w_picpathcopy($big,$small,$sx+20,0,0,0,$sx,$sy);




// 輸出

header('content-type: p_w_picpath/jpeg');

p_w_picpathjpeg($big);



?>

-------------------

18.php

<?php


// 來點(diǎn)水印效果.

/*

函數(shù)的參數(shù)和p_w_picpathcopy一樣,

差在最后一個參數(shù): $pct 代表透明度.


bool p_w_picpathcopymerge ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct )


*/



$big = p_w_picpathcreatefromjpeg('./home.jpg');

$bx = p_w_picpathsx($big);

$by = p_w_picpathsy($big);



$small = p_w_picpathcreatefrompng('./feng.png');

$sx = p_w_picpathsx($small);

$sy = p_w_picpathsy($small);



// 加文字

$blue = p_w_picpathcolorallocate($big,0,0,255);

p_w_picpathttftext($big,16,0,100,100,$blue,'./msyh.ttf','昌平水郡,鳳姐叫你來買房');



p_w_picpathcopymerge($big,$small,$bx-$sx,0,0,0,$sx,$sy,37);


// 輸出

header('content-type: p_w_picpath/jpeg');

p_w_picpathjpeg($big);




?>

-------------------

19.php

<?php


// 生成縮略圖

/*

bool p_w_picpathcopyresampled ( resource $dst_p_w_picpath , resource $src_p_w_picpath , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )

*/


$feng = p_w_picpathcreatefrompng('./feng.png');


$fx = p_w_picpathsx($feng); // 獲取寬度

$fy = p_w_picpathsy($feng); // 獲取高度



// 造一塊小畫布

$sx = $fx/2;

$sy = $fy/2;

$small = p_w_picpathcreatetruecolor($sx,$sy);



// 把大畫布粘過來,同時縮略粘過來

p_w_picpathcopyresampled($small,$feng,0,0,0,0,$sx,$sy,$fx,$fy);


if(p_w_picpathpng($small,'./xiaofeng.png')) {

    echo '保存成功';

} else {

    echo '保存失敗';

}

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI