php图片处理 除了gd库,PHP图片处理(GD库)

GD库是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片,也可以给图片加水印。

本章实现了生成图片并绘画各种形状、图片的压缩、中文字符水印及图片水印、基本验证码的生成和使用。对强大的GD库有基本的了解和使用。

GD库支持的图片格式:

PNG:

生成的图片显示显示最好

是一种无损压缩的位图片形格式

GIF:

生成的图片显示显示较好

GIF是一种基于LZW算法的连续色调的无损无损压缩格式

JPEG:

一种标准的压缩名称,通常用来存储照片或者存储具有丰富色彩和色彩层次的图像,格式使用了有损压缩。

.....

各种图形绘画和文字显示:

1 //创建资源,一个画板,参数(长宽)

2 $cour=imagecreatetruecolor(500,500);3

4 //创建一个颜色,参数(图片资源,R,G,B)

5 $color_B=imagecolorallocate($cour,0,0,255);6 $color_R=imagecolorallocate($cour,255,0,0);7 $color_G=imagecolorallocate($cour,0,255,0);8 $color_RGB=imagecolorallocate($cour,255,255,255);9

10 //区域填充颜色,参数(图片资源,x,y,颜色)11 //只要坐标在区域范围,则当前区域会被填充

12 imagefill($cour,0,0,$color_RGB);13

14 //画直线,参数(图片资源,起始x,起始y,终点x,终点y,颜色)

15 imageline($cour,10,20,100,100,$color_R);16

17 //矩形,参数(图片资源,左上角x,y,右下角x,y,颜色)18 //非填充

19 imagerectangle($cour,20,50,50,100,$color_G);20 //填充

21 imagefilledrectangle($cour,50,20,100,50,$color_G);22

23 //椭圆,圆,参数(资源,中心点x,y,长,高,颜色)

24 imageellipse($cour,100,100,50,50,$color_R);25 imagefilledellipse($cour,50,50,50,50,$color_R);26

27 //弧形,参数(椭圆参数,起始角度,结束角度,颜色)

28 imagearc($cour,120,110,50,50,-180,0,$color_G);29 //imagefilledarc()30

31 //画字

32 $strx="DONGxiaoDONG";33 //横向画

34 imagestring($cour,5,330,330,$strx,$color_R);35

36 //参数,(图像资源,大小,旋转,起始x,y,颜色,字体,内容)

37 $strx1="东小东";38 imagettftext($cour,10,5,200,300,$color_G,"font/xy.ttf",$strx1);39

40

41

42 //保存,imagepng,imagegif,imagejpeg43 //jpeg最差,gif适中,png推荐

44 imagejpeg($cour,"xxx.jpg");45

46 //销毁资源

47 imagedestroy($cour);

图片的压缩及裁剪:

1 <?php2

3 //可以传递任意gif,png,jpeg格式图片

4

5 function openimg($strimg){6 //得到图片信息,宽,高,类型

7 $imgmm=getimagesize($strimg);8 //print_r($imgmm);

9 list($w,$h,$typex)=$imgmm;10 //图片类型为1,2,3,所以需要0占位

11 $arrType=array("占位/必须","gif","jpeg","png");12 //得到需要使用的函数

13 $createimg="imagecreatefrom".$arrType[$typex];14 //得到图片资源

15 $cour=$createimg($strimg);16

17

18 //创建一个颜色,参数(图片资源,R,G,B)

19

20 $color_R=imagecolorallocate($cour,255,0,0);21

22

23 //参数,(图像资源,大小,旋转,起始x,y,颜色,字体,内容)

24 $strx1="东小东";25 imagettftext($cour,20,0,$w-100,$h-100,$color_R,"font/xy.ttf",$strx1);26

27 $destw=100;28 $desth=100;29

30 //缩放

31 $destimg=imagecreatetruecolor($destw,$desth);32

33 //--------等比列-----------------------------------

34 if($destw&&($w

41 //去掉黑边区域

42 $color=imagecolorallocate($destimg,255,255,255); //2.上色

43 imagecolortransparent($destimg,$color); //3.设置透明色

44 imagefill($destimg,0,0,$color);//4.填充透明色45

46 //参数(需输出资源,原资源,目标起始点(x,y),原起始点,目标长高,原长高)

47

48 imagecopyresampled($destimg,$cour,0,0,0,0,$destw,$desth,$w,$h);49 //剪切,函数相同,注意原大小应设置为目标大小50 //imagecopyresampled($destimg,$cour,0,0,50,50,$destw,$desth,$destw,$desth);51

52

53 //保存,与打开相似

54 $imgsave="image".$arrType[$typex];55 $imgsave($cour,$strimg);56 $imgsave($destimg,"new".$strimg);57 echo "%24strimg";58 echo "%E2%80%98new%24strimg%E2%80%98";59

60 //销毁资源

61 imagedestroy($cour);62 imagedestroy($destimg);63

64

65 }66

67 //调用函数

68 $cour=openimg("zcy.gif");

文字及图片水印的生成:

1 //可以传递任意gif,png,jpeg格式图片

2

3 function openimg($strimg){4 //得到图片信息,宽,高,类型

5 $imgmm=getimagesize($strimg);6 //print_r($imgmm);

7 list($w,$h,$typex)=$imgmm;8 //图片类型为1,2,3,所以需要0占位

9 $arrType=array("占位/必须","gif","jpeg","png");10 //得到需要使用的函数

11 $createimg="imagecreatefrom".$arrType[$typex];12 //得到图片资源

13 $cour=$createimg($strimg);14

15

16 //创建一个颜色,参数(图片资源,R,G,B)

17 $color_R=imagecolorallocate($cour,255,0,0);18

19 //文字水印20 //参数,(图像资源,大小,旋转,起始x,y,颜色,字体,内容)

21 $strx1="东 小 东";22 //长度除以3,是因为中文utf8占3个字节23 //计算字符串整体宽高

24 $fontw=strlen($strx1)/3*imagefontwidth(7);25 $fonth=imagefontheight(7);26 imagettftext($cour,7,0,$w-$fontw-10,$h-$fonth,$color_R,"font/xy.ttf",$strx1);27

28 //图片水印

29 $watermark=imagecreatefromgif("zcy.gif");30 //得到图片信息,宽,高,类型

31 $imgmmx=getimagesize("zcy.gif");32 list($ww,$hh)=$imgmmx;33 //绘制图片水印,参数(原图片资源,水印图片资源,原图片开始位置x,y,水印图片开始x,y,宽,高)

34 imagecopy($cour,$watermark,10,10,0,0,$ww,$hh);35

36

37 //保存,与打开相似

38 $imgsave="image".$arrType[$typex];39 $imgsave($cour,"new".$strimg);40 echo "new%24strimg";41

42 //销毁资源

43 imagedestroy($cour);44 imagedestroy($watermark);45

46 }47

48

49 //调用函数

50 $cour=openimg("xxx.png");

验证码的生成及使用详细:

创建:

1 <?php2

3 //创建资源,一个画板,参数(长高)

4 $cour=imagecreatetruecolor(80,30);5

6 //创建一个颜色,参数(图片资源,R,G,B)

7 $color_B=imagecolorallocate($cour,0,0,100);8 $color_R=imagecolorallocate($cour,255,0,0);9 $color_G=imagecolorallocate($cour,0,255,0);10 $color_RGB=imagecolorallocate($cour,255,255,255);11

12 //区域填充颜色,参数(图片资源,x,y,颜色)13 //随机背景颜色

14 $color_TB=imagecolorallocate($cour,rand(200,255),rand(100,150),rand(200,255));15 imagefill($cour,0,0,$color_TB);16

17 //画直线,参数(图片资源,起始x,起始y,终点x,终点y,颜色)

18 imageline($cour,10,0,30,20,$color_R);19 imageline($cour,0,15,80,6,$color_R);20

21 //矩形,参数(图片资源,左上角x,y,右下角x,y,颜色)22 //非填充

23 imagerectangle($cour,0,0,80-1,30-1,$color_G);24

25

26 //生成验证码随机字符

27 $codes="3456789abcdefghkmnpqrstvuywzABCDEFGHIGKLMNPQRSTVUYWZ";28 $endcode="";29 for($i=0;$i<4;$i++){30 $endcode.=$codes[rand(0,strlen($codes)-1)];31 }32

33

34

35 //参数,(图像资源,大小,旋转,起始x,y,颜色,字体,内容)

36 $strx1="东小".$endcode;37

38

39 //加粗

40 imagettftext($cour,10,2,10,20,$color_RGB,"font/xy.ttf",$strx1);41 imagettftext($cour,10,2,10,20,$color_R,"font/xy.ttf",$strx1);42 imagettftext($cour,10,2,11,20,$color_B,"font/xy.ttf",$strx1);43

44 //保存验证码信息到session

45 session_start();46 $_SESSION["codex"]=$strx1;47

48 //输出,imagepng,imagegif,imagejpeg

49 header("Content-type:image/png");50 imagepng($cour);51 //销毁资源

52 imagedestroy($cour);

显示:

3246addcc93a967b7cfb7b12b7d19b03.png

1

2

3

4

5

6

7

8

9

获取:

aa96d65049dc0fdd3ef6b6074bf3156b.png

1 session_start();2 echo "验证码字符串为:".$_SESSION["codex"]."
";3 echo "输入的验证码为:".$_POST["codeyy"];

判断:

如果想不区分大小写,则可先统一转换大小写,再判断

原文:https://www.cnblogs.com/dongxiaodong/p/10075591.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值