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 相关文章推荐
使用 php4 加速 web 传输
Oct 09 PHP
PHP新手上路(十)
Oct 09 PHP
解析php如何将日志写进syslog
Jun 28 PHP
php共享内存段示例分享
Jan 20 PHP
php页码形式分页函数支持静态化地址及ajax分页
Mar 28 PHP
php防止伪造的数据从URL提交方法
Jun 27 PHP
php获取文章上一页与下一页的方法
Dec 01 PHP
PHP人民币金额转大写实例代码
Oct 02 PHP
php文件系统处理方法小结
May 23 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
Jun 12 PHP
php 变量引用与变量销毁机制详细介绍
Dec 05 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
Sep 04 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数据库链接类(PDO+Access)实例分享
2013/12/05 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
php模拟post提交数据的方法
2015/02/12 PHP
php 中的closure用法详解
2017/06/12 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
改变javascript函数内部this指针指向的三种方法
2010/04/23 Javascript
基于jquery的给文章加入关键字链接
2010/10/26 Javascript
基于jquery &amp; json的省市区联动代码
2012/06/26 Javascript
JQuery的$和其它JS发生冲突的快速解决方法
2014/01/24 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
详解如何在nuxt中添加proxyTable代理
2018/08/10 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
vue router 通过路由来实现切换头部标题功能
2019/04/24 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
用webAPI实现图片放大镜效果
2020/11/23 Javascript
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
python有证书的加密解密实现方法
2014/11/19 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
python中文件变化监控示例(watchdog)
2017/10/16 Python
Python异常处理知识点总结
2019/02/18 Python
Python脚本按照当前日期创建多级目录
2019/03/01 Python
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
Under Armour安德玛意大利官网:美国高端运动科技品牌
2020/01/16 全球购物
internal修饰符起什么作用
2013/12/16 面试题
2014年党员公开承诺书范文
2014/03/28 职场文书
本科生导师推荐信范文
2014/05/18 职场文书
领导干部群众路线剖析材料
2014/10/09 职场文书
2015年企业新年寄语
2014/12/08 职场文书
医德医风个人总结
2015/02/28 职场文书
酒店收银员岗位职责
2015/04/07 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang
大型强子对撞机再次重启探索“第五种自然力”
2022/04/29 数码科技