php GD库简单使用和封装
GD库创建图像步骤
<?php
//1.创建画布
$width = 300;
$height= 200;
$image=imagecreatetruecolor($width,$height); //2.创建颜色 [RGB红绿蓝]
$white=imagecolorallocate($image,255,255,255);//白色
$black=imagecolorallocate($image,0,0,0);//黑色
$red=imagecolorallocate($image,255,0,0);//红色
$green=imagecolorallocate($image,0,255,0);//绿色
$blue=imagecolorallocate($image,0,0,255);//蓝色 //3.进行绘画
imagefill($image,0,0,$white);//将背景设置为白色,默认黑色
//水平绘制字符
imagechar($image,2,40,40,'R',$red);
//垂直绘制字符
imagecharup($image,3,80,80,'G',$green); //水平绘制字符串
imagestring($image,4,120,120,"BLUE",$blue);
//垂直绘制字符
imagestringup($image,5,160,160,'BLACK',$black); //画出一条红色的线
imageline($image,20,15,200,150,$red); //4.输出或保存
header('content-type:image/png');
imagejpeg($image); if(imagejpeg($image,'./gd.png')) {
echo '保存成功';
} else {
echo '保存失败';
} //5.销毁画布
imagedestroy($image);
封装类demo
<?php
//验证码类
class ValidateCode { /**
*简单封装demo方法
*/
public $type;//验证字符串类型
public $length;//验证字符串长度 public function __construct($type,$length){
$this->type=$type;
$this->length=$length;
} public function getVerify() {
$type=$this->type;
$length=$this->length; // 随机颜色
function getRandColor($image) {
return imagecolorallocate($image,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
} // 创建画布
$width=20+$length*40;
$height=45;
$image=imagecreatetruecolor($width,$height); // 创建颜色
$white=imagecolorallocate($image,255,255,255); // 绘制填充矩形
imagefilledrectangle($image,0,0,$width,$height,$white); /**
* 验证字符串类型
* 1-数字
* 2-字母
* 3-数字+字母
*/
switch ($type) {
case 1:
// 数字
$codeArray = array_rand(range(0,9),$length);
break;
case 2:
// 字母
$codeArray = array_rand(array_flip(array_merge(range('a','z'),range('A','Z'))),$length);
break;
case 3:
// 数字+字母
$codeArray = array_rand(array_flip(array_merge(range(0,9),range('a','z'),range('A','Z'))),$length);
break;
default:
exit('非法参数');
break;
} //session保存验证码,登录时验证code
session_start();
$_SESSION['code'] = join('',$codeArray); for($i=0;$i<$length;$i++) {
$size=mt_rand(20,22); $textWidth = imagefontwidth($size);
$textHeight= imagefontheight($size); $angle=mt_rand(-3,3); $x=($width/$length)*$i+$textWidth;
$y=mt_rand($height/2,$height-$textHeight); $fontfile="Elephant.ttf";//自选字体库
$text = $codeArray[$i];
imagettftext($image,$size,$angle,$x,$y,getRandColor($image),$fontfile,$text);
} // 添加雪花干扰元素
for($i=1;$i<=50;$i++) {
imagesetpixel($image,mt_rand(0,$width),mt_rand(0,$height),getRandColor($image));
} // 绘制线段干扰元素
for ($i=1;$i<=6;$i++) {
imageline($image,mt_rand(0,$width),mt_rand(0,$height),mt_rand(0,$height),mt_rand(0,$width),getRandColor($image));
} // 展示
header('content-type:image/png');
imagejpeg($image); // 销毁
imagedestroy($image);
}
} (new ValidateCode(3,4))->getVerify();
php GD库简单使用和封装的更多相关文章
- php中GD库的简单使用
在php中需要图像处理的地方GD库会发挥重要的作用,php可以创建并处理包括GIF,PNG,JPEG,WBMP以及XPM在内的多种图像格式,简单的举几个例子: 1.用GD库会创建一块空白图片,然后绘制 ...
- php中GD库的一些简单使用
今天了解了一些GD库的简单使用,现在稍微做一下总结! GD库是什么?,graphic device,图像工具库,gd库是php处理图形的扩展库,gd库提供了一系列用来处理图片的API,使用GD库可以处 ...
- php笔记之GD库图片创建/简单验证码
燕十八 公益PHP培训 课堂地址:YY频道88354001 学习社区:www.zixue.it php画图:比如说验证码,缩略图,加水印都要用到GD库,所以要开启gd2库,才能用 首先找到php.in ...
- php中运用GD库实现简单验证码
昨天学习了运用php的GD库进行验证码的实现. 首先可以用phpinfo()函数看一下GD库有没有安装,我用的wampserver是自动给安装的. 主要的步骤是: 1.生成验证码图片 2.随机生成字符 ...
- php使用GD库实现图片水印和缩略图——封装成类
学完了如何使用GD库来实现对图片的各种处理,那么我们可以发现,不管哪种方法,都有相似之处,如果我们把这些相似的地方和不相似的地方都封装成类,这样就可以提升代码的速度,而且节省了很多时间,废话不多说,来 ...
- 简单二次封装的Golang图像处理库:图片裁剪
简单二次封装的Golang图像处理库:图片裁剪 一.功能 Go语言下的官方图像处理库 简单封装后对jpg和png图像进行缩放/裁剪的库 二.使用说明 1.首先下载 go get -v -u githu ...
- GD库的基本信息,图像的旋转、水印、缩略图、验证码,以及图像类的封装
GD库检测 <?php phpinfo(); ?> GD库安装• Windows 使用phpstudy • Linux 编译安装 –with-gd• Linux 编译安装扩展 GD库支持的 ...
- php 简单的学习GD库绘制图片并传回给前端实现方式
1.基本的GD库绘制图片汇总 2.后台实现小案例 <?php // $img = imagecreatetruecolor(200,40); // var_dump($img); // 利用GD ...
- 【PHP】使用GD库实现 图像生成、缩放、logo水印和简单验证码
gd库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片.验证码.水印.缩略图等等.要使用gd库首先需要开启gd库扩展, windows系统下需要在php.ini中将ex ...
随机推荐
- $Prufer$序列
\(Prufer\)序列 \(Prufer\)序列与树的相互转换: 树->\(Prufer\)序列 找到一个编号最小的叶子结点,把这个点删掉并且把跟他连着的那个点的编号加入\(Prufer\)序 ...
- Kali安装在U盘+使用aircrack-ng套件
因为: Kali Linux 自带aircrack-ng 虚拟机VMware不能用笔记本内置网卡,需要另外买一个无线网卡,然而并不想买 不想给笔记本重装Kali Linux系统 有闲置的32GU盘 所 ...
- HNUSTOJ-1543 字符串的运算再现
1543: 字符串的运算再现 时间限制: 1 Sec 内存限制: 128 MB提交: 34 解决: 7[提交][状态][讨论版] 题目描述 我们对字符串 S 做了以下定义:1. S ^ k表示由k ...
- __next__()
def f1(n): m=n while True: m+=1 yield m a=f1(5) print(a.__next__()) 结果:6
- AQtime使用
今天刚到网上下了AQtime.因为有个通信及数据存储的程序出现的内存泄漏.在用户的环境里出现了两次,在测试的环境里一次也没有出现,开发人员猜测是一部分代码引起的.说要代码的覆盖测试.看看测试环境里有那 ...
- Spring Boot自动配置总结
Spring Boot项目启动的时候加载主配置类,并开启了自动配置功能.(Spring Boot的自动配置功能是Spring Boot的一大重要且突出的特性) 那么我们需要了解下它: 如何加载主配置类 ...
- 经典解压缩软件 WinRAR 5.80 sc 汉化去广告版
目录 1. 按 2. 提醒 3. 下载地址 1. 按 WinRAR拥有全球超过五千万的用户,是目前最受欢迎的压缩软件, 没有比它更加好的方法来实现高效安全的文件传输,减少电子邮件传输时间,或是迅速压缩 ...
- inux下:热插拔和模块是什么
一.何为模块? 文件系统.设备驱动程序.网络协议都可以理解为模块.模块本质也是普通的软件系统. 二.热插拔 硬件层面:只在不断电.不关闭系统的情况下增加或者删除对应部件,比如电源.硬盘.一些高端设备硬 ...
- CentOS7+ 普通用户使用密钥登陆服务器(同时禁用root登陆)
创建普通用户: # useradd user01 # tail -n2 /etc/passwd chrony:x:998:996::/var/lib/chrony:/sbin/nologin user ...
- centos7.2 my.cnf 更改问题
MySQL与Python交互,踩坑无数,碰到最棘手的问题就是更改:my.cnf文件,记录下来! 安装虚拟机,碰到下载的镜像文件有缺失,一开始没注意,浪费了很多时间.重新下载,安装成功. 安装MySQL ...