php课程 8-29 gd库能够画哪些东西
php课程 8-29 gd库能够画哪些东西
一、总结
一句话总结:文字,点,线,圆,弧线,矩形,各种形状都是可以的,和html5中的canva能画的东西很像,使用也很像,参数怎么记呢,参数完全不用记,要用脑子。
1、点干扰素如何生成?
随机坐标+画点
2、线干扰素如何生成?
随机起点和终点+画线
3、如何画饼图?
多个扇形(用不同的颜色,其实就是画扇形控制角度)拼成一个圆
- 25 // 4.在画布上画图像或文字
- 26 imagefilledarc($img,250,150,200,200,0,90,$white,IMG_ARC_PIE);
- 27 imagefilledarc($img,250,150,200,200,90,230,$blue,IMG_ARC_PIE);
- 28 imagefilledarc($img,250,150,200,200,230,360,$green,IMG_ARC_PIE);
4、如何画3D饼图?
在原来画好的饼图下面加阴影,也就是再画一个灰色的饼图,放在原图下面,略有偏移
- 16 // 3d饼图
- 17 $k=250;
- 18 $j=150;
- 19 for($i=0;$i<10;$i++){
- 20 $k+=0.3;
- 21 $j+=0.3;
- 22 imagefilledarc($img,$k,$j,200,200,0,360,$gray,IMG_ARC_PIE);
- 23 }
- 24
- 25 // 4.在画布上画图像或文字
- 26 imagefilledarc($img,250,150,200,200,0,90,$white,IMG_ARC_PIE);
- 27 imagefilledarc($img,250,150,200,200,90,230,$blue,IMG_ARC_PIE);
- 28 imagefilledarc($img,250,150,200,200,230,360,$green,IMG_ARC_PIE);
5、如何在图片上面写文字?
imagettftext,不要使用另外两种画字的函数,比如imagestring(),比如imagechar()
- 20 //画字
- 21 imagettftext($img,20,0,20,35,$white,'ms.ttf',$str);
6、imagettftext的注意事项是什么?
参数的第一个坐标是字体左下角的坐标,和别的函数不同,别的函数一般都是左上角
7、php如何生成验证码图片?
画文字+干扰素(可以用弧形干扰素)
- 20 //画字
- 21 imagettftext($img,20,0,20,35,$white,'ms.ttf',$str);
- 22
- 23 //干扰素
- 24 for($i=0;$i<30;$i++){
- 25 imagearc($img,mt_rand(0,150),mt_rand(0,50),mt_rand(0,150),mt_rand(0,50),mt_rand(0,360),mt_rand(0,360),$white);
- 26 }
二、gd库能够画哪些东西
1、相关知识
1.验证码
2.缩放
3.裁剪
4.水印
php中创建图像的六个步骤:
1.创建画布资源
$img=imagecreatetruecolor(500,300);
2.准备颜色
$black=imagecolorallocate($img,0,0,0);
$white=imagecolorallocate($img,255,255,255);
$red=imagecolorallocate($img,255,0,0);
$green=imagecolorallocate($img,0,255,0);
$blue=imagecolorallocate($img,0,0,255);
3.填充画布
imagefill($img,0,0,$black);
4.在画布上画图像或文字
imagefilledellipse($img,250,150,200,200,$white);
5.输出最终图像或保存最终图像
header('content-type:image/jpeg');
1)图片从浏览器上输出
imagejpeg($img);
2)把图片保存到本地
imagejpeg($img,'jin.jpg');
6.释放画布资源
imagedestroy($img);
绘制图像:
• imagefill(); //区域填充
• imagesetpixel(); //画一个像素
• imageline(); //画一条线
• imagerectangle(); //画一个矩形
• imagefilledrectangle(); //画一矩形并填充
• imagepolygon(); //画一个多边形
• imagefilledpolygon(); //画一个多边形并填充
• imageellipse(); //画一个椭圆
• imagefilledellipse(); //画一个椭圆并填充
• imagearc(); //画一个椭圆弧
• imagefilledarc(); //画一个椭圆弧并填充
• imagestring(); //水平地画一行字符串
• imagestringup(); //垂直地画一行字符串
• imagechar(); //水平地画一个字符
• imagecharup(); //垂直地画一个字符
• imagettftext(); //用truetype字符向图像画一个字符串
2、代码
验证码
- <?php
- // 1.创建画布资源
- $img=imagecreatetruecolor(150,50);
- // 2.准备颜色
- $black=imagecolorallocate($img,0,0,0);
- $white=imagecolorallocate($img,255,255,255);
- $red=imagecolorallocate($img,255,0,0);
- $green=imagecolorallocate($img,0,255,0);
- $blue=imagecolorallocate($img,0,0,255);
- $gray=imagecolorallocate($img,180,180,180);
- // 3.填充画布
- imagefill($img,0,0,$black);
- $arr=array_merge(range(0,9),range(a,z),range(A,Z));
- shuffle($arr);
- $str=join(' ',array_slice($arr,0,4));
- //画字
- imagettftext($img,20,0,20,35,$white,'ms.ttf',$str);
- //干扰素
- for($i=0;$i<30;$i++){
- imagearc($img,mt_rand(0,150),mt_rand(0,50),mt_rand(0,150),mt_rand(0,50),mt_rand(0,360),mt_rand(0,360),$white);
- }
- // 5.输出最终图像或保存最终图像
- header('content-type:image/png');
- // 图片从浏览器上输出
- imagepng($img);
- // 把图片保存到本地
- // imagejpeg($img,'jin.jpg');
- // 6.释放画布资源
- imagedestroy($img);
- ?>
3d饼图
- <?php
- // 1.创建画布资源
- $img=imagecreatetruecolor(500,300);
- // 2.准备颜色
- $black=imagecolorallocate($img,0,0,0);
- $white=imagecolorallocate($img,255,255,255);
- $red=imagecolorallocate($img,255,0,0);
- $green=imagecolorallocate($img,0,255,0);
- $blue=imagecolorallocate($img,0,0,255);
- $gray=imagecolorallocate($img,180,180,180);
- // 3.填充画布
- imagefill($img,0,0,$black);
- // 3d饼图
- $k=250;
- $j=150;
- for($i=0;$i<10;$i++){
- $k+=0.3;
- $j+=0.3;
- imagefilledarc($img,$k,$j,200,200,0,360,$gray,IMG_ARC_PIE);
- }
- // 4.在画布上画图像或文字
- imagefilledarc($img,250,150,200,200,0,90,$white,IMG_ARC_PIE);
- imagefilledarc($img,250,150,200,200,90,230,$blue,IMG_ARC_PIE);
- imagefilledarc($img,250,150,200,200,230,360,$green,IMG_ARC_PIE);
- // 5.输出最终图像或保存最终图像
- header('content-type:image/jpeg');
- // 图片从浏览器上输出
- imagejpeg($img);
- // 把图片保存到本地
- // imagejpeg($img,'jin.jpg');
- // 6.释放画布资源
- imagedestroy($img);
- ?>
弧线干扰素
- <?php
- // 1.创建画布资源
- $img=imagecreatetruecolor(500,300);
- // 2.准备颜色
- $black=imagecolorallocate($img,0,0,0);
- $white=imagecolorallocate($img,255,255,255);
- $red=imagecolorallocate($img,255,0,0);
- $green=imagecolorallocate($img,0,255,0);
- $blue=imagecolorallocate($img,0,0,255);
- // 3.填充画布
- imagefill($img,0,0,$black);
- // 4.在画布上画图像或文字
- for($i=0;$i<50;$i++){
- imagearc($img,mt_rand(0,500),mt_rand(0,300),mt_rand(0,300),mt_rand(0,300),mt_rand(0,360),mt_rand(0,360),$white);
- }
- // 5.输出最终图像或保存最终图像
- header('content-type:image/jpeg');
- // 图片从浏览器上输出
- imagejpeg($img);
- // 把图片保存到本地
- // imagejpeg($img,'jin.jpg');
- // 6.释放画布资源
- imagedestroy($img);
- ?>
php课程 8-29 gd库能够画哪些东西的更多相关文章
- PHP中使用GD库方式画时钟
<!--demo.html中内容--> <body> <img id="time" src="test.php" /> &l ...
- php课程 8-32 如何使用gd库进行图片裁剪和缩放
php课程 8-32 如何使用gd库进行图片裁剪和缩放 一.总结 一句话总结:图片缩放到图片裁剪就是改变原图截取的位置以及截取的宽高. 1.电商网站那么多的图片,如果全部加载卡得慢的很,所以他们是怎么 ...
- GD库使用小结---1
因为一开始,“大家”都说一般任务中,用php操作图片不常见,像我们这种基本业务型的,就更用不到了,所以先别看,偶就没有看.现在有机会了自然要来玩一把. 以前学过C#的GDI+,交了课程设计后忘得一干二 ...
- GD库处理图像
在PHP5中,动态图象的处理要比以前容易得多.PHP5在php.ini文件中包含了GD扩展包,只需去掉GD扩展包的相应注释就可以正常使用了.PHP5包含的GD库正是升级的GD2库,其中包含支持真彩图像 ...
- PHP->利用GD库新建图像
1.确认php中GD库是否开启 在PHP配置文件php.ini中查找extension=php_gd2.dll,去掉前边的(分号) ';' 即可,一般php是默认开启的 2.绘画步骤 创建一个画布(画 ...
- php学习笔记:利用gd库生成图片,并实现随机验证码
说明:一些基本的代码我都进行了注释,这里实现的验证码位数.需要用的字符串都可以再设置.有我的注释,大家应该很容易能看得懂. 基本思路: 1.用mt_rand()随机生成数字确定需要获取的字符串,对字符 ...
- php中GD库的简单使用
在php中需要图像处理的地方GD库会发挥重要的作用,php可以创建并处理包括GIF,PNG,JPEG,WBMP以及XPM在内的多种图像格式,简单的举几个例子: 1.用GD库会创建一块空白图片,然后绘制 ...
- PHP图形图像处理之初识GD库
d=====( ̄▽ ̄*)b 引语 php不仅仅局限于html的输出,还可以创建和操作各种各样的图像文件,如GIF.PNG.JPEG.WBMP.XBM等. php还可以将图像流直接显示在浏览器中. 要处 ...
- GD库使用小结---2
接着上一篇.GD库可以折腾很多用法出来,当然得跟画图相关,除了前面的验证码.水印外,还可以进行图片的缩放,裁剪.旋转等操作,这在很多应用中可以见到. 1. 加水印 前面已经知道,我们可以使用image ...
随机推荐
- pwconv---pwunconv 密码投影
pwconv命令用来开启用户的投影密码.Linux系统里的用户和群组密码,分别存放在名称为passwd和group的文件中, 这两个文件位于/etc目录下.因系统运作所需,任何人都得以读取它们,造成安 ...
- android:giavity和layout_gravity的差别
android:gravity: 是对该view中内容的限定.比方一个button 上面的text. 你能够设置该text 相对于view的靠左,靠右等位置. android:layout_gravi ...
- actionBar-进入界面闪烁问题解决
问题分析: 主要是因为在开启一个应用的时候,当前界面并不是第一界面,在它之前,还有一个界面启动了,这个界面的唯一目的就是启动主界面,它目的不是显示.虽然如此,但是呢,这个界面的theme因为没有做统一 ...
- [NowCoder]牛客OI周赛3
A.地斗主 题意:\(4\times N\) 的地板,在上面铺 \(1\times 2\) 和 \(2\times 1\) 的地砖,求铺满方案数, \(N\le 10^9\) 原题..先把一列的状态压 ...
- Flume的核心概念
Event:一条数据 Client:生产数据,运行在一个独立的线程. Agent (1)Sources.Channels.Sinks (2)其他组件:Interceptors.Channel S ...
- python3操作Excel
1.安装openpyxl模块: 在cmd命令窗执行命令 pip install openpyxl 安装openpyxl模块 from openpyxl import load_workbook ...
- linux监测tomcat服务
原文链接:https://blog.csdn.net/qq_37936542/article/details/81086928 项目上线之后,tomcat服务器有时候会莫名其妙的挂掉,利用shell写 ...
- Java开源电商项目比較
这里比較的都是国外的开源项目,备选项目有: Smilehouse Workspace.Pulse.Shopizer.ofbiz.bigfish.broadleaf 1.Smilehouse Works ...
- 7.3 GROUP BY的“新”功能
7.3 GROUP BY的"新"功能正在更新内容,请稍后
- 怎样让索引仅仅能被一个SQL使用
有个徒弟问我,要创建一个索引,去优化一个SQL,可是创建了索引之后其它 SQL 也要用 这个索引,其它SQL慢死了.要优化的SQL又快.遇到这样的问题咋搞? 一般遇到这样的问题还是非常少的.处理的方法 ...