最近在做一个图片生成站时,要求上传图片作为头像,必须对图片进行压缩啊,不然用户传个几M的图片,服务器吃不消了。所以使用PHP的imagecopyresized函数或imagecopyresampled,前者速度快,但是比较粗糙,后者采用插值算法生成更平滑的图像,速度相对会慢一些.另外用php的imgick扩展也可以来处理图片,这是后话了……
看看这两个函数的语法:
bool imagecopyresized(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y,int dst_w, int dst_h, int src_w,int src_h ) bool imagecopyresampled(resource dst_image,resource src_image,int dst_x,int dst_y,int src_x,int src_y,int dst_w,int dst_h ,int src_w,int src_h) 1.dst_im //目标图像 2.src_im //被拷贝的源图像 3.dst_x //目标图像开始 x 坐标</li> 4.dst_y //目标图像开始 y 坐标,x,y同为 0则从左上角开始 5.src_x //拷贝图像开始 x 坐标 6.src_y //拷贝图像开始 y 坐标,x,y同为 0则从左上角开始拷贝 7.dst_w //(从 dst_x 开始)拷贝的宽度 8.dst_h //(从 dst_y 开始)拷贝的高度 9.src_w //(从 src_x 开始)拷贝的宽度 10.src_h //(从 src_y 开始)拷贝的高度
栗子:
<?php $src="letwind.jpg"; //原图文件 list($src_width,$src_height)=getimagesize($src); //获取原图尺寸 $src_im=imagecreatefromjpeg($src); //获取原图的图像资源 $dst_width=$src_width*0.2; // 缩略图宽度 $dst_height=$src_height*0.2; // 缩略图高度 $dst_im=imagecreatetruecolor($dst_width,$dst_height);//创建目标图像 imagecopyresized($dst_im,$src_im,0,0,0,0,$dst_width,$dst_height,$src_width,$src_height); header("content-type:image/jpeg"); imagejpeg($dst_im); //输出图像 imagedestroy($dst_im); ?>
所以用此函数将用户上传的图片压缩后,以减少N倍的存储空间,并提高下载浏览的速度..