PHP(15)图像技术——应用案例

GD图像处理应用案例

验证码的实现

验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。

图片验证码:计算机将拿到的验证码存放图片中,让用户看到然后识别,然后提交给服务器,服务器再根据用户提交的和服务器之前生成的进行比较。

1)实现验证码图片的展示
a、生存图片资源:背景色设定
在这里插入图片描述

b、写入文字:imagestring写的效果一般,所以一般可以使用imagettftext
在这里插入图片描述

c、输出图片给浏览器
在这里插入图片描述
d、关闭资源
在这里插入图片描述

2)实现验证码文字的随机变化:有一串文字可以随机选择
a、制作目标字符串集:从哪里选内容
在这里插入图片描述
b、如何随机从字符串中取出对应的汉字:汉字在utf-8字符集中一个字占用3个字节,英文字母只占1个字节:确定字符数
在这里插入图片描述
c、随机取出对应的字符(中文汉字)
在这里插入图片描述
d、将取到的字符放到指定的图片位置
在这里插入图片描述
在这里插入图片描述

3)实现验证码文字颜色的随机变化
每次产生不同的颜色
在这里插入图片描述

4)实现验证码背景或干扰噪点
增加一些额外的不影响用户看但是会产生模糊效果的内容(点或者线)
a、增加干扰点
在这里插入图片描述
b、增加干扰线
在这里插入图片描述

5)实现点击刷新验证码功能:实现验证码在浏览器显示的功能
a、创建一个表单文件,里面有一个img标签文件
在这里插入图片描述
b、实现点击更换验证码:让src重新请求PHP脚本,产生一张新图片。因此需要给img标签增加一个点击事件:img的src是否从新发起请求却决于浏览器;浏览器是否发起请求取决于src是否改变
在这里插入图片描述

缩略图实现

1)制作图片缩略图的原理
缩略图:将原图得到一个较小的图(尺寸上)
原理:将原图打开,然后放到另一个较小的图片资源中,最后保存
2)实现固定宽高的缩略图
a、得到一张原图资源
在这里插入图片描述

b、得到一个缩略图资源(较小)
在这里插入图片描述

c、图片采样复制:GD提供了一个函数
imagecopyresampled(缩略图资源,原图资源,缩略图开始放的位置X,Y,原图采样X,Y,缩略图存放宽,高,原图采样宽,高)
在这里插入图片描述

d、保存缩略图
在这里插入图片描述

e、销毁所有资源(原图和缩略图)
在这里插入图片描述

3)实现等比例缩放的固定宽或高的缩略图
优点:图片不会变形
缺点:缩略图有些部分需要进行额外填充(白色填充:补白)

等比例缩略图与固定缩略图的制作区别:在于需要通过计算来得出缩略图的宽和高
算法原理:
1、计算缩略图宽高比
在这里插入图片描述
2、计算原图宽高比
在这里插入图片描述
3、比较:如果缩略图宽高大于原图宽高比,将缩略图用原图尽可能填满:缩略图的高是完整的,宽度不够(补白);如果缩略图宽高比小于原图宽高比,将缩略图中用原图的宽尽可能填满:缩略图的宽是完整的,高度不够。
在这里插入图片描述
4、将图片放到缩略图中间
在这里插入图片描述

水印图的实现

水印图:Watermark在某个图片上增加一个透明的印记(马赛克)
1)制作图片水印图的原理
水印图制作原理:将一个带有明显标志的图片放到另外一张需要处理的图片上
a、获取原图资源(需要放上水印图)
b、获取水印图资源
c、合并图片(把水印图合并到目标图上)
d、保存输出
e、清楚资源
2)实现固定位置的水印图:左上角
a、获取原图资源(需要放上水印图)
在这里插入图片描述

b、获取水印图资源
在这里插入图片描述

c、合并图片(把水印图合并到目标图上)
imagecopymerge(目标资源,水印资源,目标起始X,Y,水印起始X,Y,目标宽,高,透明度)
在这里插入图片描述

d、保存输出
在这里插入图片描述

e、清楚资源
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值