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库简单使用和封装的更多相关文章

  1. php中GD库的简单使用

    在php中需要图像处理的地方GD库会发挥重要的作用,php可以创建并处理包括GIF,PNG,JPEG,WBMP以及XPM在内的多种图像格式,简单的举几个例子: 1.用GD库会创建一块空白图片,然后绘制 ...

  2. php中GD库的一些简单使用

    今天了解了一些GD库的简单使用,现在稍微做一下总结! GD库是什么?,graphic device,图像工具库,gd库是php处理图形的扩展库,gd库提供了一系列用来处理图片的API,使用GD库可以处 ...

  3. php笔记之GD库图片创建/简单验证码

    燕十八 公益PHP培训 课堂地址:YY频道88354001 学习社区:www.zixue.it php画图:比如说验证码,缩略图,加水印都要用到GD库,所以要开启gd2库,才能用 首先找到php.in ...

  4. php中运用GD库实现简单验证码

    昨天学习了运用php的GD库进行验证码的实现. 首先可以用phpinfo()函数看一下GD库有没有安装,我用的wampserver是自动给安装的. 主要的步骤是: 1.生成验证码图片 2.随机生成字符 ...

  5. php使用GD库实现图片水印和缩略图——封装成类

    学完了如何使用GD库来实现对图片的各种处理,那么我们可以发现,不管哪种方法,都有相似之处,如果我们把这些相似的地方和不相似的地方都封装成类,这样就可以提升代码的速度,而且节省了很多时间,废话不多说,来 ...

  6. 简单二次封装的Golang图像处理库:图片裁剪

    简单二次封装的Golang图像处理库:图片裁剪 一.功能 Go语言下的官方图像处理库 简单封装后对jpg和png图像进行缩放/裁剪的库 二.使用说明 1.首先下载 go get -v -u githu ...

  7. GD库的基本信息,图像的旋转、水印、缩略图、验证码,以及图像类的封装

    GD库检测 <?php phpinfo(); ?> GD库安装• Windows 使用phpstudy • Linux 编译安装 –with-gd• Linux 编译安装扩展 GD库支持的 ...

  8. php 简单的学习GD库绘制图片并传回给前端实现方式

    1.基本的GD库绘制图片汇总 2.后台实现小案例 <?php // $img = imagecreatetruecolor(200,40); // var_dump($img); // 利用GD ...

  9. 【PHP】使用GD库实现 图像生成、缩放、logo水印和简单验证码

    gd库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片.验证码.水印.缩略图等等.要使用gd库首先需要开启gd库扩展, windows系统下需要在php.ini中将ex ...

随机推荐

  1. google浏览器切换成中文

    新浪下载地址:http://down.tech.sina.com.cn/content/40975.html 默认字体好像是西班牙语 1.浏览器地址chrome://settings/language ...

  2. 基于Graylog的容器日志监控

    Docker日志 当一个容器启动的时候,它其实是docker deamon的一个子进程,docker daemon可以拿到容器里面进程的标准输出,然后通过自身的LogDriver模块来处理,LogDr ...

  3. 运维DNS原理配置

    Linux DNS原理简介及配置 DNS简介 DNS原理 域名解析的过程 资源记录 DNS BIND安装配置 一.简介 一般来讲域名比IP地址更加的有含义.也更容易记住,所以通常用户更习惯输入域名来访 ...

  4. 在springboot中使用拦截器

    在springMVC中可以实现拦截器,是通过实现HandlerInterceptor接口,然后在springmvc-web.xml中配置就可以使用拦截器了.在springboot中拦截器也是一样的思想 ...

  5. vue实现轮播图

    /* Start  基本样式*/ * {   margin: 0;   padding: 0; } ul {   list-style-type: none; } body {   font-size ...

  6. thinkphp 静态缓存设置

    'HTML_CACHE_RULES'=> array('ActionName' => array('静态规则', '静态缓存有效期', '附加规则'),'ModuleName(小写)' = ...

  7. Min-max theorem

    wiki链接

  8. 微信开发企业支付到银行卡PHP

    微信开发企业支付到银行卡 功能详解 不会的朋友可以加我QQ:344902511先发个微信支付官方链接你查看https://pay.weixin.qq.com/wiki/doc/api/tools/mc ...

  9. jmeter上传文件tips

    转载:https://blog.csdn.net/aduocd/article/details/87916676 转载:https://www.cnblogs.com/landhu/p/8980195 ...

  10. for 循环,range()函数和导入模块

    (一)for语句构成: for i in range(5): print('My name is') for i in range(5): print('Jimmy Five Times ('+str ...