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、相关知识

php中gd画图的场景:
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库能够画哪些东西的更多相关文章

  1. PHP中使用GD库方式画时钟

    <!--demo.html中内容--> <body> <img id="time" src="test.php" /> &l ...

  2. php课程 8-32 如何使用gd库进行图片裁剪和缩放

    php课程 8-32 如何使用gd库进行图片裁剪和缩放 一.总结 一句话总结:图片缩放到图片裁剪就是改变原图截取的位置以及截取的宽高. 1.电商网站那么多的图片,如果全部加载卡得慢的很,所以他们是怎么 ...

  3. GD库使用小结---1

    因为一开始,“大家”都说一般任务中,用php操作图片不常见,像我们这种基本业务型的,就更用不到了,所以先别看,偶就没有看.现在有机会了自然要来玩一把. 以前学过C#的GDI+,交了课程设计后忘得一干二 ...

  4. GD库处理图像

    在PHP5中,动态图象的处理要比以前容易得多.PHP5在php.ini文件中包含了GD扩展包,只需去掉GD扩展包的相应注释就可以正常使用了.PHP5包含的GD库正是升级的GD2库,其中包含支持真彩图像 ...

  5. PHP->利用GD库新建图像

    1.确认php中GD库是否开启 在PHP配置文件php.ini中查找extension=php_gd2.dll,去掉前边的(分号) ';' 即可,一般php是默认开启的 2.绘画步骤 创建一个画布(画 ...

  6. php学习笔记:利用gd库生成图片,并实现随机验证码

    说明:一些基本的代码我都进行了注释,这里实现的验证码位数.需要用的字符串都可以再设置.有我的注释,大家应该很容易能看得懂. 基本思路: 1.用mt_rand()随机生成数字确定需要获取的字符串,对字符 ...

  7. php中GD库的简单使用

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

  8. PHP图形图像处理之初识GD库

    d=====( ̄▽ ̄*)b 引语 php不仅仅局限于html的输出,还可以创建和操作各种各样的图像文件,如GIF.PNG.JPEG.WBMP.XBM等. php还可以将图像流直接显示在浏览器中. 要处 ...

  9. GD库使用小结---2

    接着上一篇.GD库可以折腾很多用法出来,当然得跟画图相关,除了前面的验证码.水印外,还可以进行图片的缩放,裁剪.旋转等操作,这在很多应用中可以见到. 1. 加水印 前面已经知道,我们可以使用image ...

随机推荐

  1. Android 关于编译ijkplayer下的so经验分享

    前言:公司最近需要做直播方面的技术调研,所以需要去研究播放器相关的技术:刚好本人github上收藏了ijkplayer,之前一直没有研究过,现在刚好clone下来研究研究. 我先在Windows安装c ...

  2. reboot---重启Linux系统

    reboot命令用来重新启动正在运行的Linux操作系统. 语法 reboot(选项) 选项 -d:重新开机时不把数据写入记录文件/var/tmp/wtmp.本参数具有“-n”参数效果: -f:强制重 ...

  3. WPF中RichTextBox高度自适应问题解决方法

    最近做一个项目需要用到RichTextBox来显示字符串,但是不允许出现滚动条,在RichTextBox宽度给定的条件下,RichTextBox的高度必须正好显示内容,而不出现下拉滚动条. 这样就要计 ...

  4. 【Codecraft-18 and Codeforces Round #458 (Div. 1 + Div. 2, combined) A】 Perfect Squares

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] N*1000暴力就好 [代码] #include <bits/stdc++.h> using namespace std ...

  5. JNDI学习总结(3)——Tomcat下使用C3P0配置JNDI数据源

    一.C3P0下载 C3P0下载地址:http://sourceforge.net/projects/c3p0/files/?source=navbar 下载完成之后得到一个压缩包. 二.使用C3P0配 ...

  6. Java开发者最经常使用19个Linux命令

    1.查找文件 find / -name filename.txt 依据名称查找/文件夹下的filename.txt文件. 2.查看一个程序是否执行 ps –ef|grep tomcat 查看全部有关t ...

  7. 2.1 Producer API官网剖析(博主推荐)

    不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ 2.1 Producer API 2.1.生产者API 我们鼓励所有新开发的程序使用 ...

  8. $.post()提交了数据,return不给跳转

    本来Controller接到普通请求,return “somePage”,这样就跳转了.前台用$.post()提交了数据(不需要回调),我了个大草,return那里就不给跳转了这样怎么解决? ajax ...

  9. golang round

    func Round(f float64, n int) float64 {pow10_n := math.Pow10(n)return math.Trunc((f+0.5/pow10_n)*pow1 ...

  10. BZOJ3514: Codechef MARCH14 GERALD07加强版(LCT,主席树)

    Description N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数. Input 第一行四个整数N.M.K.type,代表点数.边数.询问数以及询问是否加密.接下来M ...