GD库常用函数

发布时间:2020-06-03 20:19:55 作者:柯岳ky
来源:网络 阅读:693

01.php

<?php


/*

用windows画图板画图

1:创建一张画布,设定大小



2:创建颜料.(红,r 绿g  蓝b,三原色组成的. 三原色由弱到强各可以选0-255之间).



3:画线,写字,画图形,填充等.



4:保存成图片



5:销毁画布



用gd库来画图,仍是以上5个步骤.

*/


// 1:造画布,以资源形式返回

$im = p_w_picpathcreatetruecolor(300,200);



// 2: 创建颜料

$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库默认不开启,需要打开相关选项

// 如何检测gd库是否已开启?

print_r(gd_info());

//看到如下类似数组,可以判断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

// 第一步:创建画布


// 1: 直接创建空白画布,指定宽和高两个参数

// 300*200的空白画布,返回值是资源类型

// 新建的画布,默认底色是纯黑色.

/*

$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 — 区域填充

p_w_picpathfilledarc — 画一椭圆弧且填充

p_w_picpathfilledellipse — 画一椭圆并填充

p_w_picpathfilledpolygon — 画一多边形并填充

p_w_picpathfilledrectangle — 画一矩形并填充


p_w_picpathrectangle :画一个矩形


p_w_picpathcopy : 复制图片

p_w_picpathcopymerge :复制图片并合并(可以设透明度.)


p_w_picpathcopyresampled:合并并调整大小

*/


?>


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

08.php

<?php

// 画线的学习

/*

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

*/


// 1:创建画布

$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),字体是系统默认的,改变不了.


int $x , int $y  : 代表写的第一个字符的左上角点的坐标.


string $s: 要写的内容


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;

    }


// 做验证码


$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>新建网页</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>

            验证码:<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','昌平水郡,远离城镇喧嚣');


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

p_w_picpathjpeg($im);

?>



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

13.php

<?php

/*

// 画椭圆

在一张画布定一个椭圆,需要4个数据

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


// 图片的复制


/*

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

如下:[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);



// 复制小图到大图上.

/*

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


// 图片的复制


/*

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

如下:[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);



// 复制小图到大图上.

/*

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


// 来点水印效果.

/*

函数的参数和p_w_picpathcopy一样,

差在最后一个参数: $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 '保存失败';

}

推荐阅读:
  1. PHP系列(十)GD库
  2. php gd库没有安装问题确认

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php 常用函数 gd库

上一篇:企业买服务器和租服务器哪个更划算?

下一篇:什么是FastDFS?如何使用FastDFS?

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》