php关于gd库之1

GD库,是php处理图形的扩展库。

php中处理图形和我们平常画画步骤类似:

1、创建画布------>准备画画的地方;

2、设置画笔------>选择画画的笔的颜色;

3、开始画画。

按每个步骤分开来说,创建画布,就是设置一块可以用来处理图形的区域,后面画的图形要确保在这个区域中,如果超出了设置的画布的区域,那画的东西就看不到了。

创建画布使用imagecreatetruecolor()来进行,它的具体格式如下:

//接收的参数是画布的宽和高,以像素pix表示,返回的是一个图像标识符resource imagecreatetruecolor ( int $width , int $height )

设置画笔则是选择画笔的颜色,使用imagecolorallocate()来进行设置:

//接收的参数第一个是图像标识符,后3个是RGB的色彩值int imagecolorallocate ( resource $image , int $red , int $green , int $blue )

来试着画个对角线:

1 $img = imagecreatetruecolor(200,150);  //设置一个宽200pix,高150pix的画布
2 $red = imagecolorallocate($img,0xFF,0x00,0x00); //设置一支红色的画笔
3 imageline($img,0,0,200,150,$red); //画一条从(0,0)到(200,150)坐标的红色的线
4 header("content-type:image/png"); //image/png的类型
5 imagepng($img); //以png的格式输出  //imagepng($img,"myimg.png"); //将画出来的图像保存到myimg.png文件

来看看效果如何:

就是这么个效果,在200*150的画布上画了一条红色的对角线。

——————————————————————————————————

这种简单的图形似乎没什么作用,那我们找个日常能用到的东西来测试一下,那就是“万恶的验证码”了。

验证码的原理就是在一块画布上呈现的一组随机数,不过为了防止机器识别等问题,需要将这块画布上的东西弄的凌乱一些。

以一个最简单的验证码图形来试试gd库的应用:

 1 <?php
 2 //设置画布和画笔
 3 $img = imagecreatetruecolor(45,25);
 4 $red = imagecolorallocate($img,0xFF,0x00,0x00);
 5 $white = imagecolorallocate($img,0xFF,0xFF,0xFF);
 6 $black = imagecolorallocate($img,0x00,0x00,0x00);
 7 imagefill($img,0,0,$black);
 8 //设置4位随机数
 9 $code = ‘‘;
10 for($i=0;$i<4;$i++){
11     $code .= rand(0,9);
12 }
13 imagestring($img,5,5,5,$code,$red);  //将生成的随机数放到画布上
14 for($i=0;$i<100;$i++){
15     imagesetpixel($img,rand(0,40),rand(0,25),$white);  //在画布上随机的画上100个像素点,形成噪点
16 }
17
18 header("content-type:image/png");
19 imagepng($img);

上面的代码就是一个最简单的验证码图片的生成了,它生成的是一个黑色打底,4位随机红色数字的验证码图片,看一下效果:

如果感觉干扰太多的话,可以将噪点改为50个,那样干扰的像素点就会少很多,图片上的验证码就是显得比较清楚了。

————————————————————————————————————————————

给图片加水印也是平日里经常能用到的功能,这个水印可以是图片,也可以是文字。

写个例子来试试效果:

 1 <?php
 2 //要添加水印的图片
 3 $img = imagecreatefromjpeg(‘./zjc3.jpg‘);
 4 $red = imagecolorallocate($img,0xFF,0x00,0x00);
 5
 6 //要添加到图片上的图片,用的是前面生成后保存的验证码图片
 7 $logo = imagecreatefrompng(‘./myimg1.png‘);
 8 $size = getimagesize(‘myimg1.png‘);
 9 imagecopy($img,$logo,5,5,0,0,$size[0],$size[1]);
10
11 //设置中文字体,如果不设置的话,添加中文水印会出现乱码
12 $font = "C:\Windows\Fonts\simsun.ttc";
13 $size2 = getimagesize(‘zjc3.jpg‘);
14
15 //添加到图片上的中文为“王的女人”
16 imagettftext($img,30,0,$size2[0]-160,$size2[1]-20,$red,$font,"王的女人");
17
18 header("content-type:image/jpeg");
19 imagejpeg($img);

来看一下效果:

时间: 2024-10-11 03:44:47

php关于gd库之1的相关文章

PHP利用GD库画图和生成验证码图片

首先得确定php.ini设置有没有打开GD扩展功能,测试如下 print_r(gd_info()); 如果有打印出内容如下,则说明GD功能有打开: Array ( [GD Version] => bundled (2.0.34 compatible) [FreeType Support] => 1 [FreeType Linkage] => with freetype [T1Lib Support] => 1 [GIF Read Support] => 1 [GIF Crea

PHP学习笔记-GD库与Jpgraph的使用

转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/52281196 本文出自:[顾林海的博客] 前言 学习PHP从第一篇笔记到现在这篇,已经十多篇了,每天花时间去学习是需要毅力的,好在自己对IT这行也是比较感兴趣,算是每天自娱自乐吧,下周一就去考科目三了,想想也是醉了,拖这么长时间. GD库 GD库是一个开放的动态创建图像.源代码公开的函数库,可以从官方网站http://www.boutell.com/gd处下载.目前,

安装GD库解决ThinkPHP 验证码Call to undefined function Think\imagecreate()出错

在php中imagecreate函数是一个图形处理函数,主要用于新建一个基于调色板的图像了,然后在这个基础上我们可以创建一些图形数字字符之类的,但这个函数需要GD库支持,如果没有开启GD库使用时会提示Call to undefined function imagecreate()错误. 例,我在测试一个简单生成图形时实例 Example #1 新建一个新的 GD 图像流并输出图像  代码如下 复制代码 <?php header("Content-type: image/png")

php GD库

php 中之前比较常使用的是GD库来画图像,这个使用得比较多的是验证码的使用.首先GD库画图必须要有的一些步骤: 首先,创建画布,其次,绘制图片轮廓和画本,再次是输出图型,最后是释放资源. 创建方法如下: imagecreatetruecolor(int width,int height); 填充颜色: $color=imagecolorallocate($resouces,int a,int g,int b); 颜色填充: imagefill($resouces,int start,int s

php GD库常用画图型函数

php GD库画各种的图像函数: 如下: 1.画一个像素:imagesetpixed(int x,int y); 2.画矩形:imagerectange($res,$x,$y,$x1,$x2,$color);两个点实现画矩形 3.imagefilledrectange();参数和上面一样 4.画椭圆: imageellipse($res,int x,int y,int cr,int cy,int color);资源,中心,宽度和高度 5.画一个字符串 imagestring($res,int f

PHP学习笔记-----GD库

PHP中GD库的使用 最新的GD库版本支持GIF.JPEG.PNG.WBMP.XBM等格式的图像文件. 创建图像应该完成如下所示的4个步骤. (1)      创建画布 (2)      绘制图像 (3)      输出图像 (4)      释放资源 画布管理 imagecreate()//新建一个基于调色板的图像 imagecreatetruecolor()//新建一个真彩***像 设置颜色 imagecolorallocate()//为一副图像分配颜色 生成图像 imagegif() im

CentOS 开启GD库

在php.ini 中没有找到"extension=php_gd2.dll"这行代码,这是因为CentOS一般没有预装GD库. 解决办法: 1.在线安装GD库 yum -y install php-gd 2.#重启apache,使其生效 service httpd restart

php如何开启GD库

GD库是干什么用的呢!它是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片.GD库在php中默认是没有开启的,如果想让它支持图片处理功能,那么就要手动开启GD库 步骤: 1.打开php.ini文件 2.用查找工具找到extension=php_gd2.dll,把extension=php_gd2.dll 前面的[;] 3.测试能否用GD库,代码如下:

GD库使用小结---1

因为一开始,“大家”都说一般任务中,用php操作图片不常见,像我们这种基本业务型的,就更用不到了,所以先别看,偶就没有看.现在有机会了自然要来玩一把. 以前学过C#的GDI+,交了课程设计后忘得一干二净.又被迫学了点MFC的画图,觉得这是最蛋疼的画图过程.去年做了个小任务时用到了js图表控件,用的是封装好的js库直接调方法,然后发现这是用HTML5的canvas元素结合js打造而成,这些chart控件很多很漂亮:jsChart.HighChart.EChart.aChart.Chart.js等等

php 简易验证码(GD库)

论坛中为了防止灌水,出现了很多的验证码的插件,现在这里介绍一个非常简单的自定义验证码函数,这个验证码实现的原理就是通过php扩展的gd库来实现的. 给出百度百科对验证码的定义"验证码(CAPTCHA)是"Completely Automated Public Turing test to tell Computers and Humans Apart"(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序.可以防止:恶意破解密码.刷票.论坛灌