PHP 上传并压缩图片

步骤如下:
  • 文件上传基本操作咯
  • 在上传之前,处理图片(当然,也有可能是上传图片之后,在生成缩略图 ,看自己需求了)
  • 保存压缩后的图片

大致步骤就是这样,具体如下:

文件上传操作

这里省略了,之前写过一篇上传文件的(https://blog.csdn.net/csdn_zhongwu/article/details/84308186)

关键点:

举个栗子:

	 $file = $_FILES['file'];//待上传文件
	 //$file['tmp_name'] 就是临时文件名
	 move_uploaded_file($file['tmp_name'] ,$path);//$path 文件保存路径

move_upload_file 函数就是把临时文件保存到本地了
那么,在移动文件之前,你需要做什么呢?

压缩图片(生成缩略图)

在 move_upload_file 之前,完成缩略图的操作
大致步骤

  1. 从临时文件获取图片资源 (imagecreatefrompng 或者是 imagecreatefromjpeg 函数)
  2. 创建画布资
  3. 将源图片重采样画到你的画布上 (imagecopyresampled)

关键函数: imagecopyresampled 下面是详解

	//将一幅图像中的一块正方形区域拷贝到另一个图像中,
	//平滑地插入像素值,因此,尤其是,减小了图像的大小而仍然保持了极大的清晰度。
   imagecopyresampled($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h);
   //dst_img  	目标图片 类型 resource  就是你创建的画布
   //src_img 	源图片 类型 resource  就是从临时文件中获取到的图片资源
   //dst_x     目标图片起始x坐标
   //dst_y    目标图片起始y坐标   
   //src_x   源图片起始x坐标
   //src_y  源图片起始y坐标
   //dst_w 	目标图片宽
   //dst_h		目标图片高
   //src_w   源图片宽
   //src_h   源图片高

这样看来, 是否更明了,看代码片段

list(,$src_type) = explode('/', $file['type']);//上传文件的类型,(png ,jpeg)
$src_fnc = 'imagecreatefrom' . $src_type;//创建图像资源函数 对应函数 imagecreatefrompng 或者 imagecreatefromjpeg 
$src_image = $src_fnc($file["tmp_name"]);//临时图片资源
$src_w = imagesx($src_image);//上传图片的宽
$src_h = imagesy($src_image);//高
$dst_w = floor($src_w/3);//这里 目标图片的宽是源图片的三分之一,
$dst_h = floor($src_h/3);//同样的  
$dst_image = imagecreatetruecolor($dst_w, $dst_h);//此时的画布为原来图片的 1/3
imagecopyresampled($dst_image, $src_image, 0, 0, 0, 0, $dst_w, $dst_h, $src_w, $src_h);

$out_fnc = 'image' . $src_type;//imagepng   imagejpeg
if( !($out_fnc($dst_image ,$path) && file_exists($path))){
    //缩略图保存成功了,文件路径就是$path
} else{
    //保存失败了,检查错误
}

具体情况,具体调整

你可能感兴趣的:(PHP,相关)