仓酷云

标题: PHP教程之创立并处置图像 [打印本页]

作者: 精灵巫婆    时间: 2015-2-4 00:17
标题: PHP教程之创立并处置图像
熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作完整的网页,对元素属性达到熟悉程度创立   在装置了一些第三方函数库以后,联合图形处置妙技,你就能够敏捷利用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); ?>

你的代码应当看起来像如许:

<? 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与HTML结合起来完成简单动态页面
作者: 爱飞    时间: 2015-2-4 10:45
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
作者: 海妖    时间: 2015-2-9 22:14
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
作者: 若相依    时间: 2015-2-27 23:59
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
作者: 莫相离    时间: 2015-3-9 15:34
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
作者: 柔情似水    时间: 2015-3-14 12:54
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
作者: 活着的死人    时间: 2015-3-21 07:59
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
作者: 简单生活    时间: 2015-4-6 13:05
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
作者: 愤怒的大鸟    时间: 2015-4-10 03:56
兴趣是最好的老师,百度是最好的词典。
作者: 飘灵儿    时间: 2015-4-10 13:14
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
作者: 第二个灵魂    时间: 2015-4-11 12:53
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
作者: 透明    时间: 2015-4-16 20:10
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
作者: 小魔女    时间: 2015-5-4 11:19
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
作者: 再现理想    时间: 2015-5-10 20:00
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
作者: 谁可相欹    时间: 2015-6-27 10:57
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
作者: 小女巫    时间: 2015-6-28 13:58
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
作者: 小妖女    时间: 2015-6-29 22:45
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
作者: 只想知道    时间: 2015-7-7 08:23
实践是检验自己会不会的真理。
作者: 分手快乐    时间: 2015-7-12 10:30
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
作者: 精灵巫婆    时间: 2015-7-12 14:03
兴趣是最好的老师,百度是最好的词典。




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