GD图像处理技术
一. 为什么使用GD图像处理技术
在WEB项目中,GD图像处理技术应用非常广泛,比如制作验证码图片,给图片打水印等。
二. 什么是GD图像处理技术
PHP通过使用GD扩展来操作图像的一种技术。
三. GD扩展的应用
准备工作
第一步,在php.ini配置extension_dir配置项
第二步,检查扩展文件php_gd2.dll在配置文件夹下存在并且在php.ini中开启相应的扩展
Php.ini文件中:
第三步,重启apache并检查扩展是否已经开启成功
基本操作
操作分析
我们在程序中对图像进行操作,其实就相当于我们在电脑中使用软件对图像进行操作。我们使用软件对图像操作的基本步骤是:
1,打开软件 ---》对应的是开启扩展
2,创建一个画布 (或者根据一张已有的图片创建了一个画布)
3,进行各种绘画操作
4,将图像保存
5,关闭操作的画布
创建画布操作
注意:创建的画布左上角为(0, 0)坐标点。
imagecreate函数 创建一个画布
imagecreatetruecolor函数 创建一个真彩色的画布
imagecreatefromjpeg函数 根据一张已有的jpeg图片创建一个画布
imagecreatefromgif函数 根据一张已有的gif图片创建一个画布
imagecreatefrompng函数 根据一张已有的png图片创建一个画布
imagecreate函数
需要指定两个参数,分别是画布的宽度和画布的高度。
Imagecreatetruecolor函数
需要指定两个参数,分别是画布的宽度和画布的高度。
Imagecreatefromjpeg和imagecreatefrompng函数
画布相关操作
imagecolorallocate函数 分配一个颜色(对应软件当中的选择一个颜色)
imagefill函数 颜色填充
imageline函数 画一条线
imagerectangle函数 画一个矩形
imagearc函数 画一个弧线
imagestring函数 在画布上写字(使用系统默认的字体)
imagettftext函数 在画布上使用ttf格式的字体写字
imagecolorallocate函数
Imagefill函数
Imageline函数
第二个和第三个参数为起点的坐标;第四和第五个参数为终点坐标。
imagerectangle函数
imagearc函数
imagestring函数
Imagettftext函数
根据自定义ttf格式字体在画布上写字。
图像输出相关函数
Imagejpeg函数 以jpeg格式输出(或保存)图片
Imagepng函数 以png格式输出(或保存)图片
Imagegif函数 以gif格式输出(或保存)图片
如果是要将图片输出到浏览器中,要先根据相应格式来指定header,否则无法正常输出图片。
如果不需要直接输出到浏览器,还可设置参数将图片保存成文件。
把header注释掉(不需要加上header部分),指定第二个参数(包含新文件名的全路径)
辅助图像操作函数
imagesx函数 返回图像的宽度
imagesy函数 返回图像的高度
getimagesize函数 返回图像宽高等信息
销毁画布操作函数
Imagedestroy函数 销毁画布函数
四. 案例:制作水印图
功能分析
1, 在PS中打开目标图片;
2, 在PS中打开logo图片;
3, 在目标图片上选择一个坐标位置,将logo图片移动到目标图片选择的坐标位置上,并将logo图片上的某个坐标点对齐目标图片上的这个坐标点;
4, 调整logo(水印图)的透明度;
5, 保存图片;
6, 关闭目标图片和logo图片;
程序中实现
Code5.php
实现打水印功能,主要是通过imagecopymerge函数来实现,
五. 案例:制作缩略图
制作固定宽高缩略图
功能分析
1, 打开需要缩小的图片;
2, 新建一个指定宽度和高度的目标画布;
3, 在新建的目标画布上选择一个坐标点(左上角0,0坐标);
4, 将需要缩小的图复制移动到新建的目标画布中去,并且在需要缩小的图片上选择一个坐标点(左上角0,0坐标点)对齐目标画布上选择的坐标点;
5, 调整需要缩小的图片的宽度到指定的宽度200像素;
6, 调整需要缩小的图片的高度到指定的高度200像素;
7, 将目标图片保存;
8, 关闭已打开的两个画布;
程序实现过程
Code6.php
我们制作缩略图需要通过imagecopyresampled函数来实现。
制作固定宽高的缩略图,有时候经常会导致效果变形,我们需要制作等比缩略图才不会变形。
等比缩略图的制作
算法推导图:
006.vsd
Code7.php
六. 案例:验证码制作
功能分析
1, 创建画布
2, 写字
3, 设置干扰元素(点,线段,弧线)
4, 构建回显表单页面
程序实现
程序页面code8.php
回显页面code9.php