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 ...
随机推荐
- C++学习——在C文件中调用C++文件中的函数
1.CPP文件中的内容 #include "mytest.h" #include <iostream> using namespace std; int add(con ...
- python-day1(学前了解)
Markdown基本语法 各级标题 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 加粗 **加粗文本** 斜体 *我斜了* 高亮 ==我高亮了== 上标 2 ...
- scrapy存储mysql
scrapy 数据存储mysql #spider.pyfrom scrapy.linkextractors import LinkExtractor from scrapy.spiders imp ...
- CDH部署StreamSets
StreamSets是一个大数据采集工具,数据源支持包括结构化和半/非结构化,目标源支持HDFS,HBase,Hive,Kudu,Cloudera Search, ElasticSearch等.它包括 ...
- js对时间戳的处理 获取时间,昨天,今天,明天,时间不同格式
1.获取昨天,今天,明天的时间 //昨天的时间 var day1 = new Date(); day1.setTime(day1.getTime()-24*60*60*1000); var s1 = ...
- Maven项目构建利器02——安装Maven核心程序
1.Maven也是用Java编写的工具,同样运行在JVM上,所以我们在安装Maven之前需要确保已经安装了JDK,首先来检查电脑上是否安装JDK. 2.如上图说明电脑中已经安装了JDK,下面就要去官网 ...
- id - 显示真实和有效的 UID 和 GID
总览 (SYNOPSIS) id [OPTION]... [USERNAME] 描述 (DESCRIPTION) 显示 USERNAME 或者 当前 用户 的 信息. -a 忽略, 同 其它 版本 兼 ...
- linux开启Rsyslog服务收集日志
一.查看是否安装了rsyslog服务 [root@server- ~]# yum install -y rsyslog 已加载插件:fastestmirror Loading mirror speed ...
- 二叉树中序遍历,先序遍历,后序遍历(递归栈,非递归栈,Morris Traversal)
例题 中序遍历94. Binary Tree Inorder Traversal 先序遍历144. Binary Tree Preorder Traversal 后序遍历145. Binary Tre ...
- x64工程属性 选择切换不了
删除x64工程属性 重新建立新的 配置属性 和导入工程类似 属性冲突 最好重新建立新的工程 解决