一文看懂 GD2库

article/2025/9/27 6:47:30

文章目录

      • 一、 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://chatgpt.dhexx.cn/article/O35lFCjG.shtml

相关文章

MySQL的主从复制

MySQL的主从复制 目录 为什么需要主从复制?MySQL 主从复制概念MySQL 主从复制主要用途MySQL主从形式 一主一从一主多从,提高系统的读性能多主一从 (从5.7开始支持)双主复制级联复制 MySQL 主从复制原理MySQL主从复制的过程MySQL…

redis主从结构 (一主一从,一主多从,主从从)

关闭防火墙和selinux systemctl disable firewalld.service systemctl stop firewalld vim /etc/selinux/config sed -n 7p /etc/selinux/config SELINUXdisabled setenforce 0 从服务器首次做的是全量同步,且同步的数据会覆盖本机的数据 master 192.168.…

Mysql主从模式

文章目录 👉🏻前言❤️主从模式说明🤍logbin日志🤍Mysql主从复制的流程🤍主从复制中遇到的问题 ❤️主从模式配置🤍Master配置🤍Slave配置 ❤️其他设置🤍半同步复制🤍并…

mysql主从同步

目录 1.创建主从同步用户 2.授予主从同步权限 3.刷新权限 4.修改master配置文件 5.重启MySQL 6.查看master的状态 7.修改slave配置文件 8.重启mysql 9.构建主从连接信息 10.开始同步 11.查看同步信息 12.同步失败 13.同步报错 13.1 server_id冲突 13.2 initiali…

mysql主从原理

目录 一、主从复制原理 1.原理 2.也就是说 3.注意 随着访问量的不断增多,mysql数据库的压力不断增加,需要对mysql进行优化和架构改造,可以使用高可用、主从复制、读写分离、拆分库、拆分表进行优化。下面我们来学习mysql主从复制高可用如…

MySQL主从复制

一、MySQL主从复制原理 在实际的生产中,为了解决Mysql的单点故障已经提高MySQL的整体服务性能,一般都会采用「主从复制」。 比如:在复杂的业务系统中,有一句sql执行后导致锁表,并且这条sql的的执行时间有比较长&…

Mysql主从同步配置

1. mysql主从同步定义 主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的&am…

MySQL 的主从架构

数据库主从概念、优点及用途 主从数据库中主是主库的意思,从是从库的意思。数据库主库对外提供读写操作,从库对外提供读操作。 数据库为什么需要主从架构呢? 高可用,实时灾备,用于故障切换。比如主库挂了&#xff0c…

MySQL主从同步(一主一从、一主多从、主从从)等结构的概述与配置

前言:前面我们了解了MySQL数据库的基础知识,今天及接下来的五天时间里我会给大家带来MySQL进阶方面的一些学习总结,如有不足,还请大家留言指出;下面我们就开始今天的内容。 ** 部署mysql主从同步结构 **  主从同步…

MySQL的主从

前言 金三银四面试的时候,面试官经常会问MySQL主从。今天就跟大家聊聊MySQL的主从。 数据库主从概念、优点、用途 数据库主从复制原理 主主、主从、主备的区别 MySQL是怎么保证主从一致的 数据库主从延迟的原因与解决方案 聊聊数据库的高可用方案 1. 数据库…

主从原理,一主多从架构

主从架构总结 主从原理 用binlog做主从,redolog只支持innodb 过程 ①start slave后从库启动io线程连接主库,请求读日志②dump线程根据请求信息读取指定位置后的日志③完成后就响应成功,没有确认机制④IO线程收到信息,将受到的日…

主从复制:主从复制的概述、一主一从架构搭建主从复制的原理、同步数据一致性问题

文章目录 1. 主从复制的概述1.1 如何提升数据库的并发能力1.2 主从复制的作用 2. 主从复制的原理2.1 原理剖析2.2 复制的最大问题2.3 复制的基本原则 3. 一主一从架构搭建3.1 准备工作3.2 主机配置文件3.3 从机配置文件3.4 建立账户并授权3.5 配置需要复制的主机3.6 测试3.7 停…

c/c++经典面试题(高频考点)

一、数据结构及算法(快排、归并、堆排等) 十大排序算法 数据结构(c/c版)-严蔚敏 数据结构与算法(思维导图) E:\学习\4.数据结构(C语言版)].严蔚敏_吴伟民.扫描版.pdf 数据结构分为8类有:数组、栈、队列、链表、树、散列表、堆、图 1.快速排…

吐血整理 | 最常见的 C/C++ 面试题(含答案)

大家好,我是 K 哥! 最近群里有小伙伴想跳槽,问我有没有常见的 C/C 面试题。这不正好,K 哥之前整理了一份 PDF,里面包含了各种经典的 C/C 题目,当然更重要的是还附带了非常详细的答案。 K 哥不仅面试之前会反…

2018秋招C/C++面试题总结

博主从8月中旬开始大大小小面试了十几家公司,至今也许是告一段落吧,希望后面会有好结果,因此总结记录一些C/C方向常见的问题。和大家一起学习! 参考了互联网的各种资源,自己尝试归类整理,谢谢~ 一、C和C的区…

C++面试题总结,一篇就够了

C面试题汇总 1. C基础1.1 内存模型1.1.0 内存四区1.1.1 简述C、C程序编译的内存分配情况1.1.2 分配函数与释放函数1.1.2.1 malloc / free1.1.2.2 new / delete1.1.2.3 new/delete 与 malloc/free 区别1.1.2.5 calloc 、realloc1.1.2.6 在C中,使用malloc申请的内存能…

C面试题--汇总

目录 一、C语言基础面试题1. gcc编译器编译的完整流程,分别有什么作用?2.什么是回调函数?3.地址能否使用 printf函数中的 %u形式打印?4.结构体与共用体(联合体)的区别5. static、const、volatile关键字有什…

C/C++ 最常见50道面试题

C/C经典面试题 面试题 1:变量的声明和定义有什么区别 为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明, 但是只在一个地方定义。加入 extern 修饰的是变量的声明,说明此变量将在文件以外或…

C语言经典面试题学习

1. 请填写bool , float, 指针变量 与“零值”比较的if 语句。 提示:这里“零值”可以是0, 0.0 , FALSE 或者“空指针” 。例如int 变量n 与“零值”比较的if 语句为: if ( n 0 ) if ( n ! 0 ) 以此类推。 (1)请写出bool flag 与“…

C语言面试题目大全

http://blog.chinaunix.net/uid-12077574-id-145080.html 1.求下面函数的返回值(微软) int func(x) { int countx 0; while(x) { countx ; x x&(x-1); } return countx; } 假定x 9999。 答案:8 思路:将x转化为2进制&am…