最近在做一个图片生成站时,要求上传图片作为头像,必须对图片进行压缩啊,不然用户传个几M的图片,服务器吃不消了。所以使用PHP的imagecopyresized函数或imagecopyresampled,前者速度快,但是比较粗糙,后者采用插值算法生成更平滑的图像,速度相对会慢一些.另外用php的imgick扩展也可以来处理图片,这是后话了..

106

看看这两个函数的语法:


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倍的存储空间,并提高下载浏览的速度..