本文主要和大家分享PHP中的画布详解,PHP中的图像处理技术GD,希望能帮助到大家。

创建新画布--资源型数据(可以操作图像资源)

ImageCreate(画布宽,画布高);创建基于调色板的画布。

ImageCreateTrueColor(画布宽,画布高);创建真彩画布。

基于图片创建画布

ImageCreateFromFPG(图片地址);

ImageCreateFromPNG(图片地址);

ImageCreateFromGIF(图片地址);

操作画布

分配颜色:如果需要在画布上使用某个颜色,应该先将颜色分配到画布上。

颜色标识:

$color=ImageColorAllocate(画布资源,R,G,B);RGB为三原色,大小为0~255;

填充画布:

ImageFill(画布资源,填充位置x,填充位置y,颜色标识);填充时对于与填充点连续且颜色相同的点进行填充。

将字符串写到画布上:

ImageString(画布资源,字体,位置x,位置y,字符串内容,字符颜色);

字体为内置字体,大小为1~5号。

字符颜色为前面颜色分配时所写的变量。

得到打开的画布大小:

ImageSX(画布资源);得到画布的宽。

ImageSY(画布资源);得到画布的高。

得到内置字体的大小:

ImageFontWidth(字体号);得到内置字体的宽度。

ImageFontHeight(字体号);得到内置字体的高低。

输出画布

1.输出到图片文件。

2.直接输出到页面。

ImagePNG(画布资源[,文件地址]);

ImageJPEG(画布资源[,文件地址]);

ImageGIF(画布资源[,文件地址]);

实例:验证码

header('Content-Type:image/jpg');

$chars='ABCDEFGHIJKLMNPQRSTUVWXYZ123456789';

$chars_length=strlen($chars);

$code_length=4;

$code='';

for($i=0;$i

$rand_index=mt_rand(0,$chars_length-1);

$code.=$chars[$rand_index];

}

//存储于session,用于验证。

session_start();

$_SESSION['captcha_code']=$code;

//背景图。

$bg_file='./captcha/captcha_bg'.mt_rand(1,5).'.jpg';

$img=ImageCreateFromJPEG($bg_file);

//随机分发颜色

$chars_color=mt_rand(1,2)==1?imagecolorallocate($img,0,0,0):imagecolorallocate($img,255,255,255);

//将字符串写到画布上。

$img_width=ImageSX($img);

$img_height=ImageSY($img);

$font_width=ImageFontWidth(5)*4;

$font_height=ImageFontHeight(5);

$code_width=($img_width-$font_width)/2;

$code_height=($img_height-$font_height)/2;

ImageString($img,5,$code_width,$code_height,$code,$chars_color);

ImageJPEG($img);

php 画布源代码,PHP中的画布详解相关推荐

  1. Python-Matplotlib可视化(番外篇)——Matplotlib中的事件处理详解与实战

    Python-Matplotlib可视化(番外篇)--Matplotlib中的事件处理详解与实战 前言 事件连接 事件属性 实战1:直方图中矩形的拖拽 实战2:鼠标进入和离开 相关链接与参考 前言 在 ...

  2. Java中JDBC连接数据库详解

    今天动力节点java学院小编分享的是JDBC连接数据库的相关知识,希望通过看过此文,各位小伙伴对DBC连接数据库有所了解,下面就跟随小编一起来看看JDBC连接数据库的知识吧. 一.JDBC连接数据库概 ...

  3. java做jsp问题_java/jsp中 中文问题详解

    java/jsp中 中文问题详解 更新时间:2006年10月13日 00:00:00   作者: 预备知识: 1.字节和unicode Java内核是unicode的,就连class文件也是,但是很多 ...

  4. Maven中pom文件详解

    在IDE中使用Maven IDE工具 MyEclipse 集成maven插件 Eclipse ​ Eclipse For Java EE IDEA 集成Maven插件 在IDE中 配置Maven 指定 ...

  5. php输出源代码,PHP源代码分析-echo实现详解

    PHP源代码分析-echo实现详解 echo,这个是PHP运用得最多的标记之一,算不上是函数,PHP手册里这么写的,因为它没有返回值.今天好奇就去看看PHP的源代码,因为echo不是一般的函数,所以找 ...

  6. protobuf前后端解析_前端后台以及游戏中使用google-protobuf详解

    前端后台以及游戏中使用google-protobuf详解 [TOC] 0.什么是protoBuf protoBuf是一种灵活高效的独立于语言平台的结构化数据表示方法,与XML相比,protoBuf更小 ...

  7. Windows10中Emscripten 安装详解

    Windows10中Emscripten 安装详解 Emscripten编译器,是WebAssembly开发的重要工具之一,主要是通过emcc(Emscripten Compiler Frontend ...

  8. ALSA声卡驱动中的DAPM详解之四:在驱动程序中初始化并注册widget和route

    前几篇文章我们从dapm的数据结构入手,了解了代表音频控件的widget,代表连接路径的route以及用于连接两个widget的path.之前都是一些概念的讲解以及对数据结构中各个字段的说明,从本章开 ...

  9. Asp.net中GridView使用详解(引)【转】

    Asp.net中GridView使用详解(引) GridView无代码分页排序 GridView选中,编辑,取消,删除 GridView正反双向排序 GridView和下拉菜单DropDownList ...

  10. Linux中iptraf命令详解(IP局域网监控工具)

    2019独角兽企业重金招聘Python工程师标准>>> Linux中iptraf命令详解(IP局域网监控工具) 发布时间:2017-12-27 20:46:03   作者:佚名    ...

最新文章

  1. 李飞飞谈AI医疗:为什么我要从监督医生洗手开始做起?
  2. IOS笔记-C语言中的指针与数组
  3. Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录认证及退出)解决方案
  4. java工具类去掉字符串String中的.点。android开发java程序员常用工具类
  5. 【Oracle】Oracle索引
  6. 新浪微博2-找到用户的accessToken
  7. aws ec2 php,如何使用php aws sdk启动和停止ec2实例
  8. [转载]使用消息队列实现分布式事务-公认较为理想的分布式事务解决方案
  9. android基础开发 书,Android 开发基础
  10. MacOS如何设置不使用时退出登录用户账号
  11. Atitit 企业6大职能 attilax总结
  12. php宠物管理系统源码,爱心宠物医院管理系统
  13. JAVA —— ArrayList集合习题(共四题)
  14. 人人都是产品经理2.0
  15. 微信小程序展示弹窗的几种方式
  16. (八)51单片机基础——LED点阵屏
  17. 弹出登录框 您未被授权查看该页 的解决办法
  18. Java中Springboot实战之签到功能详解(超全面)
  19. 袋鼠云数据湖平台「DataLake」,存储全量数据,打造数字底座
  20. 解决win7防火墙打不开的问题:错误代码1079和错误代码13

热门文章

  1. Mysql DBA 高级运维学习之路-mysql数据库乱码问题
  2. 【生信可视化】ChemDraw基础操作教程
  3. pdf.js插件在线预览pdf文件以及所遇问题解决方案(兼容IE)
  4. C语言show用法,show的用法及句型
  5. C++ C1 -namespace-using-域解析符-const-引用
  6. three points 1(平面几何 三角形)
  7. Android文件或文件夹压缩成.zip格式的压缩包
  8. Scholar ID
  9. 【OpenGrok代码搜索引擎】一、OpenGrok简介
  10. ChIPseeker包对ChIP-seq peaks可视化