PHP中创建并处理图象


Posted in PHP onOctober 09, 2006

在安装了一些第三方函数库之后,结合图形处理技能,你就可以迅速使用PHP创建和处理图像了。事实上,你也不需要很多几何学知识——因为我在中学的时候这门功课曾经不及格而现在却能使用PHP创建图像! 在使用基本的图像创建函数之前,需要安装GD库。要使用JPEG相关的图像创建函数还需要安装jpeg-6b。在图像中使用Type 1字体的时候还必须安装t1lib。asdf 在这里,你还需要对你的系统设置进行进一步地调整。首先安装t1lib并结束,然后是jpeg-6b。第三步安装GD函数库。确保以上三部分按顺序安装,原因是你需要编译GD库才能使用jpeg-6b库。如果首先安装jpeg-6b,编译就会出错,这会让你不知所措够上一段时间。 在三函数库之后,重新配置PHP。这是在轻松安装PHP的DSO版本时的典型方法。然后执行make clean,命令,并在当前配置提示中加入以下代码: --with-gd=[/path/to/gd] --with-jpeg-dir=[/path/to/jpeg-6b] --with-t1lib=[/path/to/t1lib] 最后执行make、make install完成配置。重新启动 Apache,并运行phpinfo()函数以检查新功能是否正常运行,然后就可以开始了。 取决于安装的GD库版本,你可能具有创建GIF或者PNG图像的能力。关键是如果你已经安装了gd-1.6或者早期版本,则可处理GIF文件,但不能处理PNG文件;如果安装了gd-1.6或者以后版本,你可以处理PNG文件却又不能处理GIF文件。 创建一个简单的图像需要几个函数。我将按步骤演示如下。 输出包含你所创建图像MIME类型的文件头,本例中为PNG。 header ("Content-type: image/png"); 使用ImageCreate()创建一变量存放空白图像。该函数需要一个图片像素尺寸。格式为ImageCreate(x_size, y_size),对250*250像素的图片,如下: $newImg = ImageCreate(250,250); 由于此时你的图像还是空白,所以需要用某些色彩填满它。但首先需要用ImageColorAllocate()函数按照颜色的RGB值为每种颜色确定名字。函数的格式为ImageColorAllocate([image], [red], [green], [blue])。如是天蓝色,应使用: $skyblue = ImageColorAllocate($newImg,136,193,255); 接着,用ImageFill()函数为图像填充以上颜色。实际上ImageFill()函数有多个版本,如ImageFillRectangle(), ImageFillPolygon()等等。为简单起见,采用ImageFill()函数进行颜色填充,格式如下: ImageFill([image], [start x point], [start y point], [color]) ImageFill($newImg,0,0,$skyblue); 最后,创建最终图像并破坏图像流以释放内存并在结束后整理系统: ImagePNG($newImg); ImageDestroy($newImg); 你的代码应该看起来像这样: <? header ("Content-type: image/png"); $newImg = ImageCreate(250,250); $skyblue = ImageColorAllocate($newImg,136,193,255); ImageFill($newImg,0,0,$skyblue); ImagePNG($newImg); ImageDestroy($newImg); ?> 如果调用脚本skyblue.php 并用自己的浏览器访问它,就会看到一个250*250像素的蓝色PNG图像。 还可以用图像创建函数处理图像,如对大图像创建的缩略图等。 假设你打算为某图片制作一个35*35像素大小的缩略图。所要做的即创建一个新的35*35像素大小图像;并产生一个包含原始图像内容的图像流;然后改变原始图像的大小,并将其放到新的空白图像中去。 达到此目的的关键函数是ImageCopyResized(),,格式如下所示:ImageCopyResized([new image handle],[original image handle],[new image X],[new Image Y],[original image X],[original image Y], [new image X], [new image Y],[original image X],[original image Y]); 注释在代码下面: <? /* 发送文件头以使浏览器知道文件类型*/ header("Content-type: image/png"); /* 设置变量保存新图片长宽*/ $newWidth = 35; $newHeight = 35; /* 以给定长和宽创建空白新图片 */ $newImg = ImageCreate($newWidth,$newHeight); /* 从原始大图获取数据 */ $origImg = ImageCreateFromPNG("test.png"); /* 复制更改尺寸后的图片。使用函数 ImageSX() 及 ImageSY 获取原始图片的x及x尺寸 */ ImageCopyResized($newImg,$origImg,0,0,0,0,$newWidth,$newHeight,ImageSX($origImg),ImageSY($origImg)); /* 创建最终图片并清空内存 */ ImagePNG($newImg); ImageDestroy($newImg); ?> 如果调用脚本resized.php并使用浏览器访问此文件,可以看到一个35*35像素的缩略PNG图片。

PHP 相关文章推荐
让PHP支持页面回退的两种方法[转]
Feb 14 PHP
php 图片上添加透明度渐变的效果
Jun 29 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
Jan 03 PHP
深入PHP nl2br()格式化输出的详解
Jun 05 PHP
解析php中static,const与define的使用区别
Jun 18 PHP
php命令行使用方法和命令行参数说明
Apr 08 PHP
Laravel 5框架学习之用户认证
Apr 09 PHP
使用phpstorm和xdebug实现远程调试的方法
Dec 29 PHP
全面解读PHP的Yii框架中的日志功能
Mar 17 PHP
Yii2实现自定义独立验证器的方法
May 05 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
Apr 20 PHP
PHP封装的非对称加密RSA算法示例
May 28 PHP
如何正确理解PHP的错误信息
Oct 09 #PHP
php+dbfile开发小型留言本
Oct 09 #PHP
用 php 编写的日历
Oct 09 #PHP
第十三节 对象串行化 [13]
Oct 09 #PHP
第七节 类的静态成员 [7]
Oct 09 #PHP
用PHP实现文件上传二法
Oct 09 #PHP
PHP安装全攻略:APACHE
Oct 09 #PHP
You might like
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
2010/10/22 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
2015/09/10 PHP
thinkPHP统计排行与分页显示功能示例
2016/12/02 PHP
node.js中的socket.io入门实例
2014/04/26 Javascript
js实现遮罩层划出效果是生成div而不是显示
2014/07/29 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
2014/12/12 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
学习使用jquery iScroll.js移动端滚动条插件
2020/03/24 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
JavaScript实现左侧菜单效果
2017/12/14 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
JS执行控制之节流模式实例分析
2018/12/21 Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
python如何实现int函数的方法示例
2018/02/19 Python
Python内置函数reversed()用法分析
2018/03/20 Python
Python日期时间对象转换为字符串的实例
2018/06/22 Python
Python关于excel和shp的使用在matplotlib
2019/01/03 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
python每天定时运行某程序代码
2019/08/16 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
将pycharm配置为matlab或者spyder的用法说明
2020/06/08 Python
Kmeans均值聚类算法原理以及Python如何实现
2020/09/26 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
Tretorn美国官网:瑞典外套和鞋类品牌,抵御风雨
2018/07/19 全球购物
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
法学专业本科生自荐信范文
2013/12/17 职场文书
赔偿协议书范本
2014/09/12 职场文书
导游词300字
2015/02/13 职场文书
中秋节慰问信
2015/02/15 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android