php 画图详解,PHP画图基础
Title: PHP画图基础 Author: MoreWindows Blog: http://blog.csdn.net/MoreWindows KeyWord: PHP绘图 画点、线、弧线 绘制和填充区域 图片特效 彩色圣诞节大雪花图 本篇对PHP常用的绘图函数进行总结。内容有建立图像,为图像分配颜色,画点,画线,画弧线,
Title: PHP画图基础
Author: MoreWindows
Blog: http://blog.csdn.net/MoreWindows
KeyWord: PHP绘图 画点、线、弧线 绘制和填充区域 图片特效 彩色圣诞节大雪花图
本篇对PHP常用的绘图函数进行总结。内容有建立图像,为图像分配颜色,画点,画线,画弧线,绘制和填充区域,输出字符和汉字及一些常见的图片特效如反色和浮雕。此外还给出一些有趣的实例,如绘制彩色的圣诞节大雪花图。
一.新建图像
resource imagecreate( int $x_size , int $y_size )
imagecreate()返回一个图像标识符,代表了一幅大小为 x_size 和y_size 的空白图像。
resource imagecreatetruecolor( int $x_size , int $y_size )
imagecreatetruecolor() 返回一个图像标识符,代表了一幅大小为 x_size 和y_size 的黑色图像。PHP手册上推荐尽量使用imagecreatetruecolor()函数。
还有根据.gif、.png、.jpg等文件来创建图像的函数。
resource imagecreatefromgif( string $filename )
resource imagecreatefrompng ( string $filename )
resource imagecreatefromjpeg( string $filename )
二.为图像分配颜色
int imagecolorallocate ( resource $image , int $red , int $green , int $blue )
imagecolorallocate() 返回一个标识符,代表了由给定的 RGB 成分组成的颜色。red,green 和 blue 分别是所需要的颜色的红,绿,蓝成分。这些参数是 0 到 255 的整数或者十六进制的 0x00 到 0xFF。第一次图像调用 imagecolorallocate()表示设置图像背景色。
int imagecolorallocatealpha( resource $image , int $red , int $green , int $blue , int $alpha )
imagecolorallocatealpha() 的行为和imagecolorallocate()相同,但多了一个额外的透明度参数alpha,其值从 0 到127。0表示完全不透明,127 表示完全透明。
三.画点
bool imagesetpixel( resource $image , int $x , int $y , int $color )
注:图像左上角为(0,0)
四.画线
bool imageline( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )
从(x1, y1)到(x2,y2)。线的风格可以由bool imagesetstyle( resource $image , array $style )来控制。宽度由bool imagesetthickness ( resource $image , int $thickness )控制,注意这个宽度在画矩形、弧线时也生效。
五.画椭圆弧
bool imagearc(resource $image , int $cx , int $cy , int $w , int $h , int $s , int $e , int $color)
imagearc()以cx,cy(图像左上角为 0, 0)为中心在 image 所代表的图像中画一个椭圆弧。w和h 分别指定了椭圆的宽度和高度,起始和结束点以 s 和e参数以角度指定。0度位于三点钟位置,以顺时针方向绘画。如:
$black = imagecolorallocate($img, 0, 0, 0);
imagearc($img, 100, 100, 150, 180, 0, 90,$black);
将在(100,100)处画一段宽150高180的从0到90度的弧,如下图所示(作为参照,右边是全图):
六.绘制区域
矩形
bool imagerectangle ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $col )
椭圆
bool imageellipse ( resource $image , int $cx , int $cy , int $w , int $h , int $color )
多边形
bool imagepolygon ( resource $image , array $points , int $num_points , int $color )
七.填充区域
填充区域
bool imagefill( resource $image , int $x , int $y , int $color )
imagefill()在image图像的(x,y)处用 color颜色执行区域填充(即与 (x, y) 点颜色相同且相邻的点都会被填充)。如以下代码片段会先画出蓝色的椭圆,然后用红色填充椭圆内部。$blue_color = imagecolorallocate($img, 0, 0, 255);
$red_color = imagecolorallocate($img, 255, 0, 0);
imageellipse($img, 300, 200, 300, 200, $blue_color);
imagefill($img, 300, 200, $red_color);
运行效果如下:
画一椭圆并填充
bool imagefilledellipse( resource $image , int $cx , int $cy , int $w , int $h , int $color )
这种画法椭圆是没有边框的,当然也可以如下实现:$lucency_color = imagecolorallocatealpha($img, 0, 0, 0, 126);//127为全透明 0全不透明
$red_color = imagecolorallocate($img, 255, 0, 0);
imageellipse($img, 300, 200, 300, 200, $lucency_color);
imagefill($img, 300, 200, $red_color);
//imagefilledellipse($img, 300, 200, 300, 200, $red_color);
画一矩形并填充
bool imagefilledrectangle (resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )
类似于画一椭圆并填充。
画一椭圆弧且填充
bool imagefilledarc( resource $image , int $cx , int $cy , int $w , int $h , int $s , int $e , int $color , int $style )
对最后一个参数说明下,有4种值:
IMG_ARC_PIE产生圆形边界(如果两个都用,IMG_ARC_CHORD生效)。
IMG_ARC_CHORD用直线连接了起始和结束点。
IMG_ARC_NOFILL画弧,只有轮廓,不填充。
IMG_ARC_EDGED指明用直线将起始和结束点与中心点相连
看下实际的效果(圆弧角度从0到210度):
将用这个函数来画饼状图。
八.字符
水平地画一个字符
bool imagechar(resource $image , int $font , int $x , int $y , string $c , int $color)
垂直地画一个字符
bool imagecharup(resource $image , int $font , int $x , int $y , string $c , int $color)
水平地画一行字符串
bool imagestring(resource $image , int $font , int $x , int $y , string $s , int $col)
垂直地画一行字符串
bool imagestringup(resource $image , int $font , int $x , int $y , string $s , int $col)
$font参数要注意下,要么使用内置的字体(从1到5),要么用int imageloadfont ( string $file )加载字体后再设置。
可以用输出*来得到彩色的圣诞节雪花图,代码如下:
运行效果如下:
九.文本
array imagettftext(resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )
解释几个参数:
第二参数$size为字体大小。
第三参数$angle为文本旋转角度,0度为从左向右读的文本,更高数值表示逆时针旋转。例如 90 度表示从下向上读的文本。
第七个参数$fontfile表示字体文件,如"c:\\WINDOWS\\Fonts\\simhei.ttf"。
注意!使用这个函数应当配合imagecreatetruecolor(),而不是imagecreate()。下面用这个imagettftext()来代替上面的imagechar从而生成彩色的圣诞节大雪花图,代码如下:
运行效果如下:
十.图像特效
bool imagefilter ( resource $src_im , int $filtertype [,int $arg1 [, int $arg2 [, int $arg3 ]]] )
这里提供了很多特效,如浮雕,反色(底片色),调节灰度、亮度,对比度,模糊化等等。这只展示几种常用的特效,更多的请访问http://www.php.net/manual/zh/function.imagefilter.php。
原图:
将图处保存到D:\\1234.png,就可以执行下面的代码了。
IMG_FILTER_NEGATE:将图像中所有颜色反转(底片色)。
代码:
IMG_FILTER_EMBOSS:使图像浮雕化。
代码:
本篇就介绍到此,《PHP 画图应用 验证码 柱状图》将用本篇介绍的函数来绘制验证码和柱状图。
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
php 画图详解,PHP画图基础相关推荐
- #转载:杨辉三角形实现过程详解-c语言基础
杨辉三角形实现过程详解-C语言基础 十一一个人 2018-12-26 06:45:45 6465 收藏 28 最后发布:2018-12-26 06:45:45首发:2018-12-26 06:45:4 ...
- docker多个容器一起打包_详解Docker 容器基础系统镜像打包
因为容器本身是共享宿主操作系统内核,所以容器基础系统镜像包本身就是一个标准的 Linux rootfs + 用户自定义的工具.根据这个思路,我们就可以构建一个自己的容器基础系统镜像. 构建标准的 Li ...
- Android Loader 异步加载详解一:基础概念
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/70241844 本文出自[赵彦军的博客] Android Loader 异步加载详解 ...
- iOS核心动画详解swift版----基础动画
2019独角兽企业重金招聘Python工程师标准>>> iOS核心动画详解swift版---基础动画 创建工程,添加2个ViewController,通过rootViewContro ...
- 高通平台8953 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇)
本系列导航: 高通平台8953 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) 高通平台8953 Linux DTS(Device Tree Source ...
- 详解USG5500防火墙基础配置
详解USG5500防火墙基础配置Trust.DMZ.Untrust 组网要求: 1.本实验中的防火墙为USG5500系列防火墙: 2. 防火墙三个接口的IP地址按照上图所示进行配置:将这三个接口划入相 ...
- Android vector Path Data画图详解
下面来解释一下"M 100,240 C510,300 80,100 300,160 H40 v80"这样字符串的意义. 分为四种情况来解释: 1. 移动指令:Move Comm ...
- python海量数据分析师职业技能_大数据分析师技能图谱详解与零基础自学内容大全...
全球的数据量正在以每18个月翻一倍的惊人速度增长,世界正在高速数字化,大数据堪比石油,如何掘金大数据是所有个人.企业和国家的机遇和挑战.中国是人才大国,能理解和应用大数据的创新人才更是稀缺资源.大数据 ...
- ucos 消息队列代码详解_用python实现 多进程队的列数据处理详解,零基础记得都收藏哦
今天就为大家分享一篇python 多进程队列数据处理详解,具有很好的参考价值,希望对大家有所帮助.喜欢的话记得点赞转发关注不迷路哦!!! 总之了写到多进程队列数据处理问题,也就不多废话了,直接来上代码 ...
最新文章
- 大掌柜商业管理系统服务器地址,大掌柜软件通用版操作说明.doc
- eclipse怎么创建web项目html,eclipse入门之创建第一个web程序(jsp测试环境)
- SQL 备份与恢复之还原数据库
- 判断程序是否运行在虚拟机中的代码
- SAP C4C里嵌入SAP Analytics Cloud的案例
- inet_pton, inet_ntop
- [css] 元素竖向的百分比设置是相对容器的高度吗?
- jsp springmvc 视图解析器_Java面试题整理——SpringMVC
- 梭织布印染后整理瑕疵最全解读
- java ojdbc6_JAVA JDBC在连接ORACLE数据库时出现ojdbc6.jar has no source 问题?
- matlab点扩散函数,点扩散函数的一维数值计算及其MATLAB实现
- k8s教程(pod篇)-污点与容忍
- java中put是什么意思_关于java:请求参数和PUT方法
- 如果格局决定人生,那到底什么决定了格局
- Google AAB测试
- 车载软件架构—CP和AP相同与不同
- IDEA 格式化 插件 AllFormat
- 除了PRD,你知道BRD、MRD吗
- ERROR: cannot verify nih.at’s certificate, issued by “/C=US/O=Let‘s Encrypt/CN=R3”,wget报错
- 关于算法设计与分析学习报告
热门文章
- 在windows下配置R-CNN detection selective_search_ijcv_with_python目标检测
- 从头再来安装anaconda3(ubuntu 18.04 TSL)我又来了!!!
- QCon看点|亚马逊云科技可持续软件工程实践分享
- 用python编程三角形_如何使用Python 打印各种三角形
- 根据腾讯公开的JS文件分析QQTEA算法
- wireshark抓包获取网站登录信息000000000000
- 按八个小时算,一天骑行多少公里合适?
- Excel如何快速录入等差数列
- C语言中的指向运算符:->
- 【Java基础】接口和抽象类有什么共同点和区别?