(独孤九剑)--图像处理
【一】图像处理概括
(1)处理应用场景:①验证码;②图片缩放;③图片水印;④密保口令卡;⑤柱状图;⑥二维码
(2)拓展:
①水印:一般就是显示图片出处的地方,有时在中间有时在右下角..就是那个有一点透明的图标状字体或网站。就比如说你在一个网站:XX网上下载一个图片,然后图片的某些地方就会有XX网的标志或者logo。这就是水印!
【二】gd2配置文件修改
(1)图像处理主要就是应用PHP的GD系统函数
GD系统可以创建处理包括GIF,JPG,JEPG,WBMP,XPM等多种格式图像。更方便的是,PHP可以直接将图像数据流输出到浏览器。想要在PHP里使用图像处理功能,需要连带GD库一起编译PHP。
可以使用PHP中的图像函数来获取下列格式图像的大小:JPEG,GIF,PNG,SWF,TIFF,JPEG2000
(2)查看是否安装了GD扩展
输入phpinfo()来查看PHP配置信息,列表中搜索gd
①已安装
例如,输入后浏览器显示:
GD Support(是否支持) | enabled(启用) |
GD Version(版本) |
bundled (2.1.0 compatible兼容) |
以上说明安装了GD扩展
②未启动
如果未启动GD扩展,可以配置php.int来打开
步骤:打开php.int,在windows下需要将GD2的DLL文件php_gd2.dll作为扩展层包含在php.int里。修改;extension=php_gd2.dll,将前面的封号去掉即可。
配置完成后,需要重启Apache服务器。再次执行phpinfo(),查看是否开启
或者直接通过安装包的操作窗口,找到PHP扩展--php_gd2来快速关闭打开
【三】画图
注意:header('content-type:image/jpeg');指定当前页面为图片格式,从而进行调用
注意:有创建就有销毁
(1)添加图片资源
//imagecreate(宽,高)创建图片,返回资源
$img = imagecreate(500, 500);
(2)添加颜色
$颜色变量 = imagecolorallocate(resource $ 图片资源,int $红,int $绿,int $蓝)
通过计算机三原色RGB,来组合调节不同颜色
$red = imagecolorallocate($img, 255, 0, 0);//红 $green = imagecolorallocate($img, 0, 255, 0);//绿 $blue = imagecolorallocate($img, 0, 0, 255);//蓝
(3)填充
imagefilledrectangle(resource $图片资源,int $点1x轴,int $点1y轴,int $点2x轴,int $点2y轴)
(4)对角线
imageline($img, 0, 0, 500, 500, $red);
(5)画圆
imagefilledellipse($img, 250, 250, 200, 200, $blue);//画圆
(6)画矩形
imagefilledrectangle($img, 250, 250, 100, 100, $green);//画矩形
(7)保存图片
imagejpeg($img,'one.jpg');
若保存成功,则会返回布尔值
保存到同级文件下,文件名为one.jpg。
注意:文件名做修改后不会覆盖原文件,而是新生成一个图片
(8)销毁图片资源
imagedestroy($img);
(9)输出显示图片
文件保存后,直接找到文件输出即可显示预览图片
echo "<img src='./one.jpg'>";
案例:
<?php $img = imagecreate(500, 500);//imagecreate(宽,高)创建图片,返回资源 $red = imagecolorallocate($img, 255, 0, 0); $green = imagecolorallocate($img, 0, 255, 0); $blue = imagecolorallocate($img, 0, 0, 255); imagefilledrectangle($img, 0, 0, 500, 500, $red);//填充 imageline($img, 0, 0, 500, 500, $red);//对角线 imageline($img, 500, 0, 0, 500, $red);//对角线 imagefilledellipse($img, 250, 250, 200, 200, $blue);//画圆 imagefilledrectangle($img, 250, 250, 100, 100, $green);//画矩形 imagejpeg($img,'one.jpg');//保存资源 imagedestroy($img);//销毁资源 echo "<img src='./one.jpg'>"; ?>
【四】验证码
验证码作用:防止机器自动注册,例如互联网早期,经常出现机器利用注册成千上万无用账号的现象。
步骤:
(1)画布;
(2)字符串;
(3)随机填充色;
(4)随机干扰元素(随机点、线、弧形均可)
(5)写入字符串;
(6)输出header头,告知浏览器按照某类型显示;
(7)输出图像;
(8)销毁图像资源
下面按照步骤详解
具体在下篇文章做了总结
【五】水印处理
<?php header('Content-type:image/jpeg'); //打开目标图片 $dst = imagecreatefromjpeg("./upload/01.jpg"); //打开Logo来源图片 $src = imagecreatefromjpeg('./upload/03.jpg'); //得到目标图片的宽高 $dst_info = getimagesize('./upload/01.jpg'); //得到Logo图片的宽高 $src_info = getimagesize('./upload/03.jpg'); $dst_x = $dst_info[0] - $src_info[0]; $dst_y = $dst_info[1] - $src_info[1]; //将图片放在右下角 imagecopymerge($dst, $src, $dst_x, $dst_y, 0, 0, $src_info[1], $src_info[1], 30); // imagecopymerge(大图, 小图, 目标开始x, 目标开始y, 来源x, 来源y, 来源宽, 来源高, 透明度) //输出图像 imagejpeg($dst); // imagejpeg($src); //销毁资源 imagedestroy($dst); imagedestroy($src); ?>