收藏文章 楼主
PHP中创建并处理图象
网友【血蜘蛛】 2005-06-20 19:35:49 分享在【时代发展的印记】版块    1    1
在安装了一些第三方函数库之后,结合图形处理技能,你就可以迅速使用PHP创建和处理图像了。事实上,你也不需要很多几何学知识——因为我在中学的时候这门功课曾经不及格而现在却能使用PHP创建图像!

在使用基本的图像创建函数之前,需要安装GD库。要使用JPEG相关的图像创建函数还需要安装jpeg-6b。在图像中使用Type 1字体的时候还必须安装t1lib。

在这里,你还需要对你的系统设置进行进一步地调整。首先安装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);

你的代码应该看起来像这样:

代码:
$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图片。

出处:builder.com
meiguo.com 发布人签名/座右铭·有时你看似是一件很吃亏的事,往往会变成非常有得的事。
·凡事都留有余地,因为人是人,不是神,不免有错处,可以原谅人的地方,就原谅人。
·好的时候不要看得太好,坏的时候不要看的太坏。
大家都在看
回复/评论列表
默认   热门   正序   倒序
meiguo.com 创始人

emotion

1   2005-06-20 19:35:49  回复

回复/评论:PHP中创建并处理图象

暂无用户组 升级
退出
等级:0级
美果:
美过
精华推荐
  1. 韦伯望远镜(JWST)发布迄今为止最大的早期宇宙地图
  2. “全球最强护照”排行榜又更新了(2025版)
  3. 在美国可以感受欧洲风情的五座小镇
  4. 川普政府计划改革移民签证制度和入籍考试
  5. 川普总统声称希望中国“增加美油采购”
  6. 遥控器电池,被幼儿误吞… 欧系保险公司赔付了近1.4亿元人民币!
  7. 川普政府在力推药价改革和数字医疗系统
  8. “外星来客”以每小时21.6万公里的速度向地球飞来
  9. 移民并非背叛,是一种勇敢的人生轨迹选择!
  10. 苹果投资了6000亿美元,加速“美国制造”计划!
  11. 美国新法案“大漂亮”引发了全球资本配置大调整
  12. QQ等级256级用户诞生,首次解锁“时光企鹅”图标!
  13. 中美经贸谈判重启,瑞典磋商和商界代表团访华“双管齐下”
  14. 川普政府的对华政策突然改变了?
  15. 川普总统签署了“对等关税令” 引发全球震荡
  16. 英伟达的市值突破了四万亿美元,创人类历史纪录!
  17. 中国🇨🇳开始质疑英伟达芯片“存后门”
  18. 美国再次宣布退出联合国教科文组织
  19. 川普政府打算“发钱啦”
  20. 突然“失去住持”的少林寺情况如何了?
  21. 宗庆后家族的多处海外房产曝光,价值数亿元!
  22. 美国移民新机遇:紧缺人才的绿卡通道“无需排期”
  23. 萝莉岛是美国的政治中心?马斯克并非不懂政治,而是太懂了!
  24. 美国国会通过了减税法案,马斯克和川普总统再次激烈交锋!
  25. 比尔盖茨的财富突然蒸发了510亿美元,真相却令人肃然起敬!
  26. 难怪马斯克公开认错… 川普总统的相关杀器可以更多?
  27. 核聚变技术或将成为黄金价格的颠覆者
  28. 马斯克打算组建新党“美国党”代表中间派
  29. 川普总统批评支持者,马斯克激烈回应!
  30. 广西防城港“奔驰女司机事件”引发全网热议
  31. 孩子沉迷手机的真相和破局之道
  32. 中美连谈5小时,川普总统公开感叹“中国太强硬”… 英伟达在加紧扩大芯片出口量
  33. 健身网红在飞机上的着装引争议
  34. 麻省理工学院发布AI学习平台“MIT Learn”
  35. 川普总统宣布“金卡计划”网站开放
  36. 中国政府在构筑战略资源防线,重拳打击稀土走私!

美国动态 美果搜索

Your IP: 216.73.216.161, 2025-08-11 22:31:23

Processed in 0.07763 second(s)

头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息
已有0次打赏
(1) 分享
分享
取消