玩转图像函数库―常见图形操作


Posted in PHP onSeptember 03, 2006

我尽量不说大理论,诸如什么是png,自己查解决.

PHP自4.3版本开始,捆绑了自己的GD2库,用户可以自己下载并设置.如果要查看自己的php版本是否支持gd模块(支持JPEG,PNG,WBMP但不再支持GIF),如下方式是一种方法:

if(!function_exists('imagecreate')) {
die('本服务器不支持GD模块');
}

如果不支持的话,如何配置 ? 下载gd模块的dll文件,修改php.ini,重启服务器即可.

以下简称PHP作图为PS.

当您打算 PS的话,应该完成如下如下步骤,这是必经的.

1:创建基本PS对象(我假设为$image),填充背景(默认黑),以后的全部ps操作都是基于这个背景图像的.
2:在$image上作图.
3:输出这个图像.
4:销毁对象,清除使用内存.

首先,我们来认识几个常用的函数,这些函数在php手册里面都有详细介绍,此处大体引用下.

resource imagecreate ( int x_size, int y_size )
imagecreate() 返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的空白图像。
此函数基本同imagetruecolor($width,$height).

int imagecolorallocate ( resource image, int red, int green, int blue )
imagecolorallocate() 返回一个标识符,代表了由给定的 RGB 成分组成的颜色。image 参数是 imagecreatetruecolor() 函数的返回值。red,green 和 blue 分别是所需要的颜色的红,绿,蓝成分。这些参数是 0 到 255 的整数或者十六进制的 0x00 到 0xFF。imagecolorallocate() 必须被调用以创建每一种用在 image 所代表的图像中的颜色。

bool imagefill ( resource image, int x, int y, int color )
imagefill() 在 image 图像的坐标 x,y(图像左上角为 0, 0)处用 color 颜色执行区域填充(即与 x, y 点颜色相同且相邻的点都会被填充)。

bool imageline ( resource image, int x1, int y1, int x2, int y2, int color )
imageline() 用 color 颜色在图像 image 中从坐标 x1,y1 到 x2,y2(图像左上角为 0, 0)画一条线段。

bool imagestring ( resource image, int font, int x, int y, string s, int col )
imagestring() 用 col 颜色将字符串 s 画到 image 所代表的图像的 x,y 坐标处(这是字符串左上角坐标,整幅图像的左上角为 0,0)。如果 font 是 1,2,3,4 或 5,则使用内置字体。

array imagettftext ( resource image, float size, float angle, int x, int y, int color, string fontfile, string text )
本函数比较重要,参数较多,此处不再列出,它主要是写字到图像上,和上面的函数类似,但必前者强大.

bool imagefilltoborder ( resource image, int x, int y, int border, int color )
imagefilltoborder() 从 x,y(图像左上角为 0, 0)点开始用 color 颜色执行区域填充,直到碰到颜色为 border 的边界为止。【注:边界内的所有颜色都会被填充。如果指定的边界色和该点颜色相同,则没有填充。如果图像中没有该边界色,则整幅图像都会被填充。】

bool imagefilledellipse ( resource image, int cx, int cy, int w, int h, int color )
imagefilledellipse() 在 image 所代表的图像中以 cx,cy(图像左上角为 0, 0)为中心画一个椭圆。w 和 h 分别指定了椭圆的宽和高。椭圆用 color 颜色填充。如果成功则返回 TRUE,失败则返回 FALSE。

输出图像数据:imagepng($image[,$filename])

PHP 相关文章推荐
phpMyadmin 用户权限中英对照
Apr 02 PHP
10个实用的PHP代码片段
Sep 02 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
Apr 22 PHP
浅析php变量作用域的一些问题
Aug 08 PHP
php防注入及开发安全详细解析
Aug 09 PHP
PHP获取数组最后一个值的2种方法
Jan 21 PHP
PHP保存带BOM文件的方法
Feb 12 PHP
php保存信息到当前Session的方法
Mar 16 PHP
php实现通过cookie换肤的方法
Jul 13 PHP
PHP Echo字符串的连接格式
Mar 07 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 PHP
PHP实现非阻塞模式的方法分析
Jul 26 PHP
生成静态页面的PHP类
Jul 15 #PHP
删除无限级目录与文件代码共享
Jul 12 #PHP
PHP截取中文字符串的问题
Jul 12 #PHP
最令PHP初学者头痛的十四个问题
Jul 12 #PHP
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
Jul 09 #PHP
PHP初学者头疼问题总结
Jul 08 #PHP
php分页函数
Jul 08 #PHP
You might like
PHP开发微信支付的代码分享
2014/05/25 PHP
php自定文件保存session的方法
2014/12/10 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
2010/03/24 Javascript
利用jQuery的deferred对象实现异步按顺序加载JS文件
2013/03/17 Javascript
JavaScript中json使用自己总结
2013/08/13 Javascript
js 控制图片大小核心讲解
2013/10/09 Javascript
js中同步与异步处理的方法和区别总结
2013/12/25 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
JavaScript实现的一个日期格式化函数分享
2014/12/06 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
javascript中if和switch,==和===详解
2015/07/30 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
AngularJS变量及过滤器Filter用法分析
2016/11/22 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
JS代码实现电脑配置检测功能
2018/03/21 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
2019/08/15 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
在Python的struct模块中进行数据格式转换的方法
2015/06/17 Python
python中getaddrinfo()基本用法实例分析
2015/06/28 Python
Python wxPython库Core组件BoxSizer用法示例
2018/09/03 Python
在echarts中图例legend和坐标系grid实现左右布局实例
2020/05/16 Python
详解CSS3中常用的样式【基本文本和字体样式】
2020/10/20 HTML / CSS
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
2014/10/03 面试题
化工专业个人的求职信范文
2013/11/28 职场文书
人事行政主管岗位职责
2013/12/22 职场文书
股权转让协议书
2014/04/12 职场文书
伊索寓言教学反思
2014/05/01 职场文书
车间安全生产标语
2014/06/06 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python
Jmerte 分布式压测及分布式压测配置
2022/04/30 Java/Android