仓酷云

标题: PHP网站制作之用PHP创立并处置图像 [打印本页]

作者: 兰色精灵    时间: 2015-2-3 23:56
标题: PHP网站制作之用PHP创立并处置图像
不断巩固,摸透大部分PHP常用函数,并可理解OOP,MYSQL优化,以及模板创立   在装置了一些第三方函数库以后,联合图形处置妙技,你就能够敏捷利用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]
最初履行makemake 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图片。
本文作者:Julie Meloni 是i2i Interactive的手艺主管,及Linux和开放源代码社区的鼎力推进者。她撰写了良多关于PHP及其他手艺的书本,并成为对CNET Builder.com具有临时奉献的专家。
刚开始觉得自己对这些多少有些基础,很简单,但是看了老师那么熟练的进行网页布局的时候,突然之间发现,其实,我的基础并没有自己想像的那么好,自己设计的页面其实并不好看,就连表格的边框为1像素都不会弄。
作者: 再见西城    时间: 2015-2-4 07:03
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
作者: 海妖    时间: 2015-2-5 19:25
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
作者: 飘飘悠悠    时间: 2015-2-8 03:43
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
作者: 山那边是海    时间: 2015-2-24 03:39
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
作者: 小魔女    时间: 2015-2-26 06:34
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
作者: 柔情似水    时间: 2015-3-2 01:20
基础有没有对学习php没有太大区别,关键是兴趣。
作者: 小女巫    时间: 2015-3-6 15:39
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
作者: 变相怪杰    时间: 2015-3-10 23:31
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
作者: 兰色精灵    时间: 2015-3-17 05:15
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
作者: 灵魂腐蚀    时间: 2015-3-18 10:50
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
作者: 爱飞    时间: 2015-3-25 16:44
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
作者: 谁可相欹    时间: 2015-4-11 17:08
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
作者: 活着的死人    时间: 2015-4-18 12:25
兴趣是最好的老师,百度是最好的词典。
作者: 因胸联盟    时间: 2015-5-1 08:10
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
作者: 简单生活    时间: 2015-5-2 21:57
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
作者: 金色的骷髅    时间: 2015-5-3 14:47
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
作者: 冷月葬花魂    时间: 2015-5-4 19:37
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
作者: admin    时间: 2015-6-14 18:44
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者: 仓酷云    时间: 2015-6-22 07:08
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2