PHP中创建并处理图象
核心提示:PHP编程,PHP教程,PHP5教程,PHP开发
在安装了1些第3方函数库以后,结合图形处理技能,你便可以够迅速使用PHP创建和处理图象了。事实上,你也不需要很多几何学知识——由于我在中学的时候这门作业曾不及格而现在却能使用PHP创建图象!
在使用基本的图象创建函数之前,需要安装GD库。要使用JPEG相干的图象创建函数还需要安装jpeg⑹b。在图象中使用Type1字体的时候还必须安装t1lib。asdf
在这里,你还需要对你的系统设置进行进1步地调剂。首先安装t1lib并结束,然后是jpeg⑹b。第3步安装GD函数库。确保以上3部份按顺序安装,缘由是你需要编译GD库才能使用jpeg⑹b库。假设首先安装jpeg⑹b,编译就会出错,这会让你手足无措够上1段时间。
在3函数库以后,重新配置PHP。这是在轻松安装PHP的DSO版本时的典型方法。然后履行makeclean,命令,并在当前配置提示中加进以下代码:
--with-gd=[/path/to/gd]
--with-jpeg-dir=[/path/to/jpeg⑹b]
--with-t1lib=[/path/to/t1lib]
最后履行make、makeinstall完成配置。重新启动Apache,并运行phpinfo()函数以检查新功能是否是正常运行,然后便可以够开始了。
取决于安装的GD库版本,你可能具有创建GIF或PNG图象的能力。关键是假设你已安装了gd⑴.6或早期版本,则可处理GIF文件,但不能处理PNG文件;假设安装了gd⑴.6或以后版本,你可以处理PNG文件却又不能处理GIF文件。
创建1个简单的图象需要几个函数。我将按步骤演示以下。
输出包括你所创建图象MIME类型的文件头,本例中为PNG。
使用ImageCreate()创建1变量寄存空缺图象。该函数需要1个图片像素尺寸。格式为ImageCreate(x_size,y_size),对250*250像素的图片,以下:
由于此时你的图象还是空缺,所以需要用某些色采填满它。但首先需要用ImageColorAllocate()函数依照色采的RGB值为每种色采肯定名字。函数的格式为ImageColorAllocate([image],[red],[green],[blue])。如是天蓝色,应使用:
接着,用ImageFill()函数为图象填充以上色采。实际上ImageFill()函数有多个版本,如ImageFillRectangle(),ImageFillPolygon()等等。为简单起见,采取ImageFill()函数进行色采填充,格式以下:
ImageFill([image],[startxpoint],[startypoint],[color])
最后,创建终极图象并破坏图象流以开释内存并在结束后整理系统:
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并用自己的浏览器访问它,就会看到1个250*250像素的蓝色PNG图象。
还可以用图象创建函数处理图象,如对大图象创建的缩略图等。
假定你打算为某图片制作1个35*35像素大小的缩略图。所要做的即创建1个新的35*35像素大小图象;并产生1个包括原始图象内容的图象流;然后改变原始图象的大小,并将其放到新的空缺图象中往。
到达此目的的关键函数是ImageCopyResized(),,格式以下所示:ImageCopyResized([newimagehandle],[originalimagehandle],[newimageX],[newImageY],[originalimageX],[originalimageY],[newimageX],[newimageY],[originalimageX],[originalimageY]);
注释在代码下面:
/*发送文件头以使浏览器知道文件类型*/
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并使用浏览器访问此文件,可以看到1个35*35像素的缩略PNG图片。
http://www.fw8.net/TAG:图片,文件,函数,图象,像素
评论加载中...
|