版权声明:本文为CSDN博主「程重吾」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/csdn_zhongwu/article/details/92752513
存着方便自己学习
步骤如下:
文件上传基本操作咯
在上传之前,处理图片(当然,也有可能是上传图片之后,在生成缩略图 ,看自己需求了)
保存压缩后的图片
大致步骤就是这样,具体如下:
文件上传操作
这里省略了,之前写过一篇上传文件的(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 之前,完成缩略图的操作
大致步骤
- 从临时文件获取图片资源 (imagecreatefrompng 或者是 imagecreatefromjpeg 函数)
- 创建画布资
- 将源图片重采样画到你的画布上 (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{
//保存失败了,检查错误
}
具体情况,具体调整