phpGD图像.docx
- 文档编号:14266184
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:9
- 大小:36.84KB
phpGD图像.docx
《phpGD图像.docx》由会员分享,可在线阅读,更多相关《phpGD图像.docx(9页珍藏版)》请在冰点文库上搜索。
phpGD图像
PHP动态图像处理
本章任务
v1.PHP中GD库的使用
v2.验证码的绘制和使用
v3.PHP图片处理(缩放、裁剪、水印、旋转和翻转)
1.PHP中GD库的使用
1.1GD简介
PHP不仅限于只产生HTML的输出,还可以创建及操作多种不同格式的图像文件。
PHP提供了一些内置的图像信息函数,也可以使用GD函数库创建新图像或处理已有的图像。
目前GD2库支持GIF、JPEG、PNG和WBMP等格式。
此外还支持一些FreeType、Type1等字体库。
•JPEG是一种压缩标准的名字,通常是用来存储照片或者存储具有丰富色彩和色彩层次的图像。
这种格式使用了有损压缩。
•PNG是可移植的网络图像,对图像采用了无损压缩标准。
•GIF原义是“图像互换格式”,是一种基于LZW算法的连续色调的无损压缩格式。
GD库图像绘制的步骤
在PHP中创建一个图像应该完成如下所示的4个步骤:
1.创建一个背景图像(也叫画布),以后的操作都基于此背景图像。
2.在背景上绘制图像轮廓或输入文本。
3.输出最终图形
4.释放资源
1.2画布管理
vimagecreate -- 新建一个基于调色板的图像
Øresourceimagecreate(intx_size,inty_size)
Ø本函数用来建立空新画布,参数为图片大小,单位为像素(pixel)。
支持256色。
vimagecreatetruecolor -- 新建一个真彩色图像
Øresourceimagecreatetruecolor(intx_size,inty_size)
Ø新建一个真彩色图像画布,需要GD2.0.1或更高版本,不能用于GIF文件格式。
(256×256×256)
vimagedestroy -- 销毁一图像
Øboolimagedestroy(resourceimage)
Øimagedestroy()释放与image关联的内存。
1.3设置颜色
vimagecolorallocate -- 为一幅图像分配颜色
Ø语法:
intimagecolorallocate(resourceimage,intred,intgreen,intblue)
vimagecolorallocate()返回一个标识符,代表了由给定的RGB成分组成的颜色。
red,green和blue分别是所需要的颜色的红,绿,蓝成分。
这些参数是0到255的整数或者十六进制的0x00到0xFF。
imagecolorallocate()必须被调用以创建每一种用在image所代表的图像中的颜色。
1.4生成图像
vimagegif -- 以GIF格式将图像输出到浏览器或文件
Ø语法:
boolimagegif(resourceimage[,stringfilename])
vimagejpeg -- 以JPEG格式将图像输出到浏览器或文件
Ø语法:
boolimagejpeg(resourceimage[,stringfilename[,intquality]])
vimagepng -- 以PNG格式将图像输出到浏览器或文件
Ø语法:
boolimagepng(resourceimage[,stringfilename])
vimagewbmp -- 以WBMP格式将图像输出到浏览器或文件
Ø语法:
boolimagewbmp(resourceimage[,stringfilename[,intforeground]])
1.5绘制图像
vimagefill -- 区域填充
Ø语法:
boolimagefill(resourceimage,intx,inty,intcolor)
Øimagefill()在image图像的坐标x,y(图像左上角为0,0)处用color颜色执行区域填充(即与x,y点颜色相同且相邻的点都会被填充)。
vimagesetpixel -- 画一个单一像素
Ø语法:
boolimagesetpixel(resourceimage,intx,inty,intcolor)
Øimagesetpixel()在image图像中用color颜色在x,y坐标(图像左上角为0,0)上画一个点。
vimageline -- 画一条线段
Ø语法:
boolimageline(resourceimage,intx1,inty1,intx2,inty2,intcolor)
X1,y1起点
X2,y2终点
vimageline()用color颜色在图像image中从坐标x1,y1到x2,y2(图像左上角为0,0)画一条线段。
vimagerectangle -- 画一个矩形
Ø语法:
boolimagerectangle(resourceimage,intx1,inty1,intx2,inty2,intcol)
Øimagerectangle()用col颜色在image图像中画一个矩形,其左上角坐标为x1,y1,右下角坐标为x2,y2。
图像的左上角坐标为0,0。
X1,y1:
角坐标
x2,y2:
角坐标矩形:
是正着
vimagefilledrectangle -- 画一矩形并填充
Ø语法:
boolimagefilledrectangle(resourceimage,intx1,inty1,intx2,inty2,intcolor)
Øimagefilledrectangle()在image图像中画一个用color颜色填充了的矩形,其左上角坐标为x1,y1,右下角坐标为x2,y2。
0,0是图像的最左上角。
vimagepolygon -- 画一个多边形
Ø语法:
boolimagepolygon(resourceimage,arraypoints,intnum_points,intcolor)
Øimagepolygon()在图像中创建一个多边形。
points是一个PHP数组,包含了多边形的各个顶点坐标,即points[0]=x0,points[1]=y0,points[2]=x1,points[3]=y1,以此类推。
num_points是顶点的总数。
vimagefilledpolygon -- 画一多边形并填充
Ø语法:
boolimagefilledpolygon(resourceimage,arraypoints,intnum_points,intcolor)
Øimagefilledpolygon()在image图像中画一个填充了的多边形。
points参数是一个按顺序包含有多边形各顶点的x和y坐标的数组。
num_points参数是顶点的总数,必须大于3。
vimageellipse -- 画一个椭圆
Ø语法:
boolimageellipse(resourceimage,intcx,intcy,intw,inth,intcolor)
Øimageellipse()在image所代表的图像中画一个中心为cx,cy(图像左上角为0,0)的椭圆。
w和h分别指定了椭圆的宽度和高度,椭圆的颜色由color指定。
vimagefilledellipse -- 画一椭圆并填充
Ø语法:
boolimagefilledellipse(resourceimage,intcx,intcy,intw,inth,intcolor)
Øimagefilledellipse()在image所代表的图像中以cx,cy(图像左上角为0,0)为中心画一个椭圆。
w和h分别指定了椭圆的宽和高。
椭圆用color颜色填充。
如果成功则返回TRUE,失败则返回FALSE。
vimagearc -- 画椭圆弧
Øboolimagearc(resourceimage,intcx,intcy,intw,inth,ints,inte,intcolor)
Øimagearc()以cx,cy(图像左上角为0,0)为中心在image所代表的图像中画一个椭圆弧。
w和h分别指定了椭圆的宽度和高度,起始和结束点以s和e参数以角度指定。
0°位于三点钟位置,以顺时针方向绘画。
vimagefilledarc -- 画一椭圆弧且填充
Øboolimagefilledarc(resourceimage,intcx,intcy,intw,inth,ints,inte,intcolor,intstyle)
Øimagefilledarc()在image所代表的图像中以cx,cy(图像左上角为0,0)画一椭圆弧。
如果成功则返回TRUE,失败则返回FALSE。
w和h分别指定了椭圆的宽和高,s和e参数以角度指定了起始和结束点。
style可以是下列值按位或(OR)后的值:
ØIMG_ARC_PIEIMG_ARC_CHORD
ØIMG_ARC_NOFILLIMG_ARC_EDGED
Ø
1.6在图像中绘制文字
vimagestring -- 水平地画一行字符串
Ø语法:
boolimagestring(resourceimage,intfont,intx,inty,strings,intcol)
Øimagestring()用col颜色将字符串s画到image所代表的图像的x,y坐标处(这是字符串左上角坐标,整幅图像的左上角为0,0)。
如果font是1,2,3,4或5,则使用内置字体。
vimagestringup -- 垂直地画一行字符串
Ø语法:
boolimagestringup(resourceimage,intfont,intx,inty,strings,intcol)
Øimagestring()用col颜色将字符串s垂直地画到image所代表的图像的x,y座标处(图像的左上角为0,0)。
如果font是1,2,3,4或5,则使用内置字体。
vimagechar -- 水平地画一个字符
Ø语法:
boolimagechar(resourceimage,intfont,intx,inty,stringc,intcolor)
Øimagechar()将字符串c的第一个字符画在image指定的图像中,其左上角位于x,y(图像左上角为0,0),颜色为color。
如果font是1,2,3,4或5,则使用内置的字体(更大的数字对应于更大的字体)。
vimagecharup -- 垂直地画一个字符
Ø语法:
boolimagecharup(resourceimage,intfont,intx,inty,stringc,intcolor)
Øimagecharup()将字符c垂直地画在image指定的图像上,位于x,y(图像左上角为0,0),颜色为color。
如果font为1,2,3,4或5,则使用内置的字体。
vimagettftext -- 用TrueType字体向图像写入文本
Ø语法:
arrayimagettftext(resourceimage,floatsize,floatangle,intx,inty,intcolor,stringfontfile,stringtext)
2.验证码的绘制和使用
v验证码(CAPTCHA)是“CompletelyAutomatedPublicTuringtesttotellComputersandHumansApart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机和人的公共全自动程序。
v使用验证码的目的:
可以防止:
恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试。
v验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,XX社区)。
v验证码的样式也是千奇百态,本节重点讲解使用GD库绘制图像的方式。
具体实现步骤
v设计验证码的步骤
v验证码在表单中如何使用
3.PHP图片处理
3.1图片背景管理
v从指定的图片文件或URL地址来新建一个图像。
成功则返回一个图像标识符,失败时返回一个空字符串,并且输出一条错误信息。
由于格式不同,则需要分别使用对应图片背景处理函数。
Øresourceimagecreatefrompng(stringfilename)
从PNG文件或URL新建一图像
Øresourceimagecreatefromjpeg(stringfilename)
从JPEG文件或URL新建一图像
Øresourceimagecreatefromgif(stringfilename)
从GIF文件或URL新建一图像
Øresourceimagecreatefromwbmp(stringfilename)
从WBMP文件或URL新建一图像
v其他图像处理函数:
Øintimagesx(resourceimage)
取得图像宽度
Øintimagesy(resourceimage)
取得图像高度
Øarraygetimagesize(string$filename[,array&$imageinfo])
取得图像大小、类型等信息
3.2图片缩放和裁剪
vboolimagecopyresampled(resource$dst_image,resource$src_image,int$dst_x,int$dst_y,int$src_x,int$src_y,int$dst_w,int$dst_h,int$src_w,int$src_h)
重采样拷贝部分图像并调整大小,是将一幅图像中的一块正方形区域拷贝到另一个图像中,平滑地插入像素值,因此,尤其是,减小了图像的大小而仍然保持了极大的清晰度。
成功时返回TRUE,或者在失败时返回FALSE。
其中dst_image和src_image分别是目标图像和源图像的标识符。
.boolimagecopyresized(resource$dst_image,resource$src_image,int$dst_x,int$dst_y,int$src_x,int$src_y,int$dst_w,int$dst_h,int$src_w,int$src_h)
imagecopyresized()将一幅图像中的一块正方形区域拷贝到另一个图像中。
dst_image和src_image分别是目标图像和源图像的标识符。
如果源和目标的宽度和高度不同,则会进行相应的图像收缩和拉伸。
坐标指的是左上角。
本函数可用来在同一幅图内部拷贝(如果dst_image和src_image相同的话)区域,但如果区域交迭的话则结果不可预知。
3.3添加图片水印
vboolimagecopy(resource$dst_im,resource$src_im,int$dst_x,int$dst_y,int$src_x,int$src_y,int$src_w,int$src_h)
Ø拷贝图像的一部分(也就是图片合成)。
Ø将src_im图像中坐标从src_x,src_y开始,宽度为src_w,高度为src_h的一部分拷贝到dst_im图像中坐标为dst_x和dst_y的位置上。
3.4图片旋转和翻转
vresourceimagerotate(resource$src_im,float$angle,int$bgd_color[,int$ignore_transparent])
Ø用给定角度旋转图像
Ø将src_im图像用给定的angle角度旋转。
bgd_color指定了旋转后没有覆盖到的部分的颜色。
Ø旋转的中心是图像的中心,旋转后的图像会按比例缩小以适合目标图像的大小——边缘不会被剪去。
Ø如果ignore_transparent被设为非零值,则透明色会被忽略(否则会被保留)。
总结
v本章必须掌握的知识点:
Ø画布管理和设置颜色
Ø绘制和生成图像
Ø验证码的绘制和使用
Ø图片的一些常见的操作(缩放、添加水印、裁剪、旋转和翻转)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- phpGD 图像