PHP 上传并压缩图片(转载)

版权声明:本文为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 之前,完成缩略图的操作
大致步骤

  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{
    //保存失败了,检查错误
}

具体情况,具体调整

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值