一文看懂 GD2库

文章目录

      • 一、 GD2简介
        • 1、 验证码(实际上是一个img)
      • 二、 GD2库使用步骤
        • 2.1添加扩展
        • 2.2修改php配置文件
        • 2.3重启服务
      • 三、 GD2里面的常用方法
        • 3.1 imagecreate
        • 3.2 imagecolorallocate
        • 3.3 imagefill
        • 3.4 输出图像资源
        • 3.5创建真彩画布
        • 3.6在图像中写文字
          • 3.6.1imagettftext
          • 3.6.2imagestring
        • 3.7在图像中写横线
        • 3.8在图像中画矩形
        • 3.9在图像中画弧度
      • 四、 验证码案例
        • 4.1验证码第一版
        • 4.2回顾生成四位随机数
        • 4.3验证码第二版
        • 4.4点击按钮切换图片
        • 4.5点击按钮切换验证码
      • 五、 水印图

一、 GD2简介

php语言本身没办法直接操作图片,但是需要安装一些扩展库,有很多,但是常用的是GD2库。
GD2库实际上主要用在下面几个方面:

1、 验证码(实际上是一个img)

美食杰的注册页
在这里插入图片描述

2、 水印图
在这里插入图片描述

3、 缩略图
在这里插入图片描述

二、 GD2库使用步骤

2.1添加扩展

我们的phpstudy集成环境下是默认安装了php_gd2.dll文件,如果没有自己百度搜索一下,把下载的dll文件放在你的对应版本的ext目录下。
在这里插入图片描述

2.2修改php配置文件

我们直接在目录下找到配置文件双击打开
在这里插入图片描述

或者通过phpstudy打开
在这里插入图片描述

按住ctrl+f搜索extension=php_gd2.dll文件,把前面的分号去掉
在这里插入图片描述

2.3重启服务

在这里插入图片描述

三、 GD2里面的常用方法

3.1 imagecreate

imagecreate(宽,高)是新建一个基于调色板的图像,本质上就是创建一个画布。默认是透明色

3.2 imagecolorallocate

imagecolorallocate(画布资源,red,gren,blue);
注意红绿蓝是RGB的色值,每一个取值范围是0-255

3.3 imagefill

imagefill(画布资源,x轴坐标,用轴坐标,填充的颜色)
注意图像的左上角默认是0,0点

3.4 输出图像资源

imagepng()是输出png格式图像到浏览器
imagejpeg()是输出jpeg格式图像到浏览器
imagegif()是输出gif格式图像到浏览器
如果直接输出是乱码
在这里插入图片描述

因为浏览器默认是解析成html标签,不识别图像,所以加上header头识别

3.5创建真彩画布

imagecreatetruecolor(宽,高)创建一个真彩的图像资源,默认是黑色的

在这里插入图片描述

imagepng可以设置两个参数

在这里插入图片描述

如果imagepng()设置了一个参数是把图像资源直接在浏览器输出,如果设置了第二个参数代表把图片保存成自己定义的文件名。
在这里插入图片描述

3.6在图像中写文字

3.6.1imagettftext

imagettftext — 用 TrueType 字体向图像写入文本
我们在自己的计算机c盘/windows/fonts/里面有各种内置的字体
在这里插入图片描述

我们随意复制一个文件放在自己的项目文件夹下面
在这里插入图片描述

显示效果如下:

在这里插入图片描述

这个方法也可以输出中文

在这里插入图片描述

3.6.2imagestring

imagestring — 水平地画一行字符串,输中文会乱码,只能输出字符。
这个方法字符的左上角为0,0点,不用设置字体格式,默认使用内置字体
在这里插入图片描述

总结如下:
1、
imagettftext不仅能输出英文字符还能输出中文
imagestring只能输出英文,如果是中文是解析后的乱码
2、imagettftext是文字的左小角为0,0点。
imagestring文字的左上角为0,0点
4、 imagettftext等加入字体文件格式,imagestring使用默认字体

3.7在图像中写横线

imageline(图像资源,开始点的x坐标,开始点的y坐标,结束点的x坐标,结束点的y坐标,线条颜色)
在这里插入图片描述

3.8在图像中画矩形

imagerectangle(图像资源,左上角的x和y坐标,右下角的x和y坐标,矩形颜色);
在这里插入图片描述

3.9在图像中画弧度

在这里插入图片描述

参数说明如下:
在这里插入图片描述

4.0 imagecreatefrompng/jpeg/gif
在这里插入图片描述

4.2getimagesize
在这里插入图片描述

getimagesize()是返回的关于图像大小以及类型相关信息的数组
第一个参数:宽
第二个参数:高
第三个参数:给出的是图像的类型,返回的是数字,其中1 = GIF,2 = JPG,3 = PNG
最后一个参数:是图像类型
4.2imagecopy
imagecopy(目标图像资源,源图像资源,放在目标位置的x和y坐标,原图截取开始的x和y坐标,截取原图的宽度和高度)

四、 验证码案例

4.1验证码第一版

4.2回顾生成四位随机数

rand(开始数字,结束数字)会随机生成一个开始到结束范围内的数字
在这里插入图片描述

4.3验证码第二版

在这里插入图片描述

生成效果如下:
在这里插入图片描述

然后我们生成随机的颜色,修改如下:
在这里插入图片描述

4.4点击按钮切换图片

在这里插入图片描述

4.5点击按钮切换验证码

因为浏览器有一个缓存机制,就是访问同一个文件的时候就不会去给服务器发请求,从缓存里读取,所以导致我们点击按钮的没有作用,还是访问的以前缓存的那个图片,我们采取拼接参数的形式
在这里插入图片描述

所以我们更改代码如下:
在这里插入图片描述

五、 水印图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法实践--最小生成树(Kruskal算法)

什么是最小生成树(Minimum Spanning Tree) 每两个端点之间的边都有一个权重值,最小生成树是这些边的一个子集。这些边可以将所有端点连到一起,且总的权重最小 下图所示的例子,最小生成树是{cf, fa, ab} 3条边 Kruskal算法 用到上一篇中介绍的…

洽谈 “会话技术” 纯干货赶紧收藏吧

文章目录一、 HTTP协议二、 会话三、 cookie3.1概念和设置cookie3.2读取cookie3.3设置cookie有效期3.4cookie是跨页面的3.5删除cookie3.6登录案例3.7cookie特点四、 session4.1概念4.2设置session4.3获取session4.4清除session4.5模拟购物车案例一、 HTTP协议 HTTP协议是Hyper…

[bzoj2729][HNOI2012]排队 题解 (排列组合 高精)

Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检。他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的…

详解 正则表达式

文章目录一、概念二、作用三、语法规则3.1定义规则3.2符号简介3.3preg_match用法详解3.4详解元字符3.4.1 \d和[0-9]3.4.2 \D和[^0-9]3.4.3^和$3.4.4*代表出现0次或者多次3.4.5代表出现1次或者多次3.4.5?代表出现0次或者1次3.4.6{n}3.4.7{n,}3.4.8{n,m}3.4.9点号&…

Java:控制台输入车辆信息,将信息保存至数据库中

程序功能:控制台输入车辆信息,将信息保存至数据库中 程序代码如下: BaseDao.java package DAO_dome.kehozuoye; import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;i…

echars 3D地图为区域自定义颜色

echars 3D地图为区域自定义颜色问题延伸解决问题问题 根据项目需求,我们要将下面省级地图中的个别市进行高亮(不同颜色)展示 延伸 首先跟大家介绍这个地图的展示方式: 采用的是Vue框架中运用echarts地图采用的是geo3D和scatt…

基于Python语言使用RabbitMQ消息队列(一)

介绍 RabbitMQ 是一个消息中间人(broker): 它接收并且发送消息. 你可以把它想象成一个邮局: 当你把想要寄出的信放到邮筒里时, 你可以确定邮递员会把信件送到收信人那里. 在这个比喻中, RabbitMQ 就是一个邮筒, 同时也是邮局和邮递员 . 和邮局的主要不同…

爆赞程序猿开发软件

VSCode 使用 IntelliSense 超越语法突出显示和自动完成,它提供基于变量类型、函数定义和导入模块的智能完成 直接从编辑器调试代码。启动或附加到您正在运行的应用程序并使用断点、调用堆栈和交互式控制台进行调试 与 Git 和其他 SCM 提供商合作从未如此简单。查…

如果你在北京失业了,别怕,记得去领这笔钱!最少2034元/月!

人在江湖飘,哪能不挨刀 公司倒闭,老板走人,公司裁人 …… 就要被迫失业了 别怕! 如果你在北京失业了 记得去领这笔钱——失业保险金 每月最多有2143元 虽然钱不多,但能解燃眉之急 帮助你度过困难日子 重点全程网上就能…

真实诠释程序员日常的二十四张图【你中了几个】

当你打开遗留代码时 扒下来项目后改了一行代码…… 程序员调试css样式的时候 当你的try catch 不起作用 产品经理对你说要兼容IE 没有ui给你提供大小设计的结果 没吃透需求直接开发的你 程序员修复bug的真实处境 当你开始使用库,但忘记阅读文档 产品经理告诉你这只是…

Git学习原版手稿

手稿诞生记 Git学习的时候难免会有遗忘然后往复学习查看的过程,所以就形成了这个学习的手稿,记录了Git使用过程中的大部分命令,今天在清理的时候偶然看到了这些记录,而且最近也在写Git的使用教程,大致的学习线路也是按…

程序员首选编程电脑【火爆来袭】

作为一名程序员肯定会常用到一些编程软件,所以需要设备的配置参数上不能太差,不仅是要以稳定强大输出为基本,内存、音响、续航等方面也不可或缺。 直奔主题 如果你手里资金到位,那必须整一步到位——MacBook 对于这款大佬型笔记本…

强大的APIClound云修复——告别繁琐的编译打包流程

小编接到一项目的二期开发任务,拉下代码开始熟悉大概的框架、技术、上线流程等前期工作,本app是通过vue技术进行开发,使用ui是 vant 库,打包上线则是使用的 APIClound 平台; 在我们的app上线后,如果我们改…

你对ES6究竟了解多少?—— 有这一篇就够用了

1. ES6相关概念(★★) 1.1 什么是ES6 ES 的全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范。ES6 是ES2015以后的泛称 1.2 为什么使用 ES6 ? 每一次标准的诞生都意味着语言的完善,功能的加强。JavaScrip…

JavaScript 高级——详谈面向对象

1.面向过程与面向对象 1.1面向过程 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了。 1.2面向对象 面向对象是把事务分解成为一个个对象,然后由对象之间分工与合作。…

UVa202Repeating Decimals (循环小数)

解答&#xff1a; 因为除数是固定的&#xff0c;所以只要判断被除数是否出现过即可。 #include<iostream> #include <cstdio> #include <cstring> using namespace std; int m,n,vis[5000],res[5000],temp[5000],num,t,x; int main() {while(scanf("%d%…

构造函数、原型、继承原来这么简单?来吧,深入浅出

构造函数 小编上篇博客中介绍到的通过关键字class方式定义类&#xff0c;然后根据类再创建对象的方式&#xff0c;是ES6中语法&#xff0c;现在很多浏览器对ES6的支持还不是很好&#xff0c;所以也要学习通过构造函数&#xff08;构建函数&#xff09;的方式创建对象 问&…

你疏漏的 JS 函数硬核知识?这里帮你总结了

重点 更多前端知识 诚邀各位前端从事者爱好者加入前端大佬技术交流社区&#xff0c;本社区主要分享技术栈、个人心得、技术交流、问题解惑等前端体系交流 点击下方文字加入 前端大佬技术交流社区 1. 函数的定义和调用 1.1 函数的定义方式 方式1 函数声明方式 function 关键…

再见了 React、Angular,Vue3 才是 yyds

切记一定要看到最后&#xff01;&#xff01;&#xff01; 最近看到一篇文章上面是一作者资讯一位IT前辈&#xff0c;问他怎么看待工作 2 年的前端开发&#xff0c;月薪就高达 30k、40k 的现状。 他说&#xff0c;在众多编程技术中&#xff0c;前端算比较容易入门和提升的&am…

系统带你学习 WebAPIs 第一讲

Web APIs 本篇学习目标&#xff1a; 能够通过ID来获取元素 能够通过标签名来获取元素 能够通过class来获取元素 能够通过选择器来获取元素 能够获取body和html元素 能够给元素注册事件 能够修改元素的内容 能够区分innerText和innerHTML的区别 能够修改像div这类普通元素的属性…