11水印图和剔除无效数据.docx
《11水印图和剔除无效数据.docx》由会员分享,可在线阅读,更多相关《11水印图和剔除无效数据.docx(12页珍藏版)》请在冰豆网上搜索。
11水印图和剔除无效数据
回顾
文件上传
1.判断上传的文件是否正确(文件类型,错误代码)
2.移动(文件重命名,文件移动失败)
3.通过配置文件来配置相关信息(文件的大小,文件类型)
4.保存在数据库中的是文件上传对应的相对路径(不是绝对路径)
缩略图
1.获取原图资源
通过判断文件的类型来使用不同的创建图片资源的函数
a)获取文件后缀名
b)获取文件后缀名对应的可能存在的函数识别类型的图片后缀(关联数组)
c)将文件后缀与imagecreatefrom进行拼凑,形成一个函数名的字符串
d)利用可变函数将字符串当做函数使用
2.创建缩略图资源(画布)
3.采样和复制粘贴(将原图资源放到缩略图资源)
4.保存输出
5.释放(销毁)资源
缩略图
补白:
缩略图按照比例进行缩放,如果不能够完全填充缩略图(不是正好把所有的缩略图给覆盖),那么没有被覆盖的区域,就使用空白(白色)来填充。
如何计算缩略图中原图应该有的尺寸?
如何修改缩略图的制作方法?
1.求出原图的宽高比和缩略图的宽高比
2.通过比较宽高比来计算原图在缩略图中应该实际占用的宽和高。
3.修改图片资源粘贴过程中原图在缩略图所占的宽和高。
4.求出原始图片在缩略图中的起始位置。
5.修改缩略图和原图采样粘贴时的原图的起始位置。
6.修改缩略图的背景颜色。
缩略图显示
在商品列表中,每个商品显示对应的缩略图信息。
1.添加一个img标签,src属性使用对应数据库里的存储路径。
/admin/templates/goods_list.html
2.解决前后台访问的路径问题:
将所有访问的路径做成绝对路径。
url
a)前台:
b)后台:
解决方法:
类似TP框架,定义一个路径常量,然后在需要使用绝对路径的时候,平凑常量和相对路径即可。
定义目录常量。
/admin/includes/init.php
在所有需要浏览器解析资源的地方拼凑绝对路径。
水印
水印就是在一张图片上添加的文字或者图片
文字水印:
验证码
图片水印:
将一张图片覆盖在另外一张图片上
水印的作用?
1.用来标识版权
2.马赛克
水印的制作流程
1.获取水印图片资源
2.获取目标图片资源(水印放到哪个图片上)
3.采样合并(将水印图合并到目标图片上)
imagecopymerge:
将两个图片资源合并到一起。
boolimagecopymerge(目标图片资源,水印资源,目标x坐标,目标y坐标,水印x坐标,水印y坐标,水印采样宽,水印采样高度,透明度)
注意:
透明度是度数越低越透明
4.保存输出
5.销毁资源
水印应用到项目
1.找到要使用水印图的地方。
/admin/goods.php?
act=insert
2.实现水印图创建方法。
/includes/Image.class.php
a)检查文件的有效性(目标文件)
b)获取水印图片信息
c)检查水印图片的有效性
d)确定获取图片资源的函数。
e)获取图片资源
f)获取图片信息
g)因为需要计算水印图的位置,需要指定参数来供用户选择。
h)通过用户选定的位置,计算出水印的位置
i)采样合并:
认为对水印图的采样是完全的。
j)参数中指定透明度。
k)保存图片
l)销毁资源
3.在调用出判断结果。
/admin/goods.php?
act=insert
如果涉及到一个多字段的更新的时候,当用户提交后,后台接收到数据之后没有办法自动用户做了哪些修改。
当后台接收到记录对应的id的时候,这个时候数据库的数据并没有被改变。
1.接收用户数据(包括记录ID)
2.通过记录ID把对应的原始数据进行获取
3.通过array_diff(接收的用户的数据数组,当前ID对应的原来的数据数组)。
数组下标必须一致。
4.最后对结果进行遍历构造更新语句进行执行。
剔除无效数据
在构造SQL语句的时候,对字段进行筛选,只有在数据表中存在的字段,可以被用来构造SQL语句,其他的被放弃。
1.为每个对象(表类)获取一份数据,每张表对应的所有的字段。
在DB类中增加一个方法:
获取对应的表的所有字段信息,然后在构造方法中调用。
2.在DB类的构造方法中调用当前方法。
3.在每个类中必须定义一个属性fields。
MVC
MVC又是一种设计思想,是面向对象思想的一种设计典范。
mvc指的是将业务逻辑与数据的显示进行分离(PHP文件处理所有的业务逻辑,使用模板来显示数据和样式),还需要将业务逻辑与数据处理分离(数据的处理都由对应数据表的类来处理)
M:
Model,模型,专门用来处理数据(操作数据库)
V:
View,视图,用来显示数据,以及样式
C:
Controller,控制器,连接M和V,处理所有的业务逻辑(接收用户请求,调用模型获取数据,调用视图显示数据)
MVC的访问原理
PHP代码发展过程
1.混编模式:
PHP代码与html代码混合在一起
a)优点:
执行效率高
b)缺点:
很难维护
2.模板技术:
PHP代码与html代码分离开
a)优点:
维护性增强
b)缺点:
数据的处理与业务逻辑的处理是合并的
3.MVC思想:
在模板技术的基础上,将数据的操作与业务逻辑的处理再次进行分离
a)优点:
整个代码变的简洁,维护性变得更强
几乎所有的面向对象都是在MVC的思想指导下进行开发。
几个常见的单词
模块:
Module,一系列功能的集合(相似的功能都由一个模块来出来),模块就是控制器
模板:
template,负责显示数据以及控制数据显示的样式,就是视图
shop项目的MVC思想
控制器处理业务逻辑:
凡是用户的请求,用户数据的提交在后台的数据获取,数据合法性判断,都属于业务逻辑
模型的数据逻辑:
凡是需要操作数据库的部分都称之为数据逻辑。
shop项目是基于模块的单一入口
privilege.php:
处理所有的权限
goods.php:
处理所有商品相关
category.php:
处理所有商品分类相关
基于面向对象,项目可以分为两种
1.模块单一入口:
进化不完全(业务处理采用面向过程,数据处理采用面向对象)
2.项目单一入口:
整个项目的所有请求请求一个PHP文件(index.php),(控制器,视图,模型都是类)
中级项目
提供一个网站的模板(可以自己找:
静态页),通过PHP来实现动态网站。
项目要求
1.项目架构
a)PHP源码开发
b)mysql数据库
c)MVC设计思想
2.代码架构
a)简单的文件结构
b)所有实现的方法或者业务都必须在前面添加注释
分组要求
一排一组
每组有一个组长
组长工作:
1.给组员分配工作
2.公共代码的维护