效果图如下:
首先需要一个上传文件页面index.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图片压缩上传</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="img" value="image/*">
<button type="submit" name="button">压缩上传图片</button>
</form>
</body>
</html>
接下来用index.php文件后端接收:
<?php
if(empty($_FILES)){
include 'index.html';
}else{
$file = $_FILES['img'];
$dst_image = imagecreatefromstring(file_get_contents($file['tmp_name']));
list($file_width,$file_height) = getimagesize($file['tmp_name']);
$width = 200;
$height = $file_height / $file_width * $width;
$thumb_img = imagecreatetruecolor($width,$height);
$compress_img = imagecreatetruecolor($file_width,$file_height);
$file_type = explode('/',$file['type']);
$img_types = ['jpeg','png','gif'];
$img_type = (in_array($file_type[1],$img_types)) ? $file_type[1] : 'png';
$img_name = uniqid().'.'.$img_type;
$fn_name = 'image'.$img_type;
$thumb_path = './thumb/';
$compress_path = './compress/';
$orig_path = './orig/';
is_dir($thumb_path) || mkdir($thumb_path);
is_dir($compress_path) || mkdir($compress_path);
is_dir($orig_path) || mkdir($orig_path);
imagecopyresampled($thumb_img,$dst_image,0,0,0,0,$width,$height,$file_width,$file_height);
$fn_name($thumb_img,$thumb_path.$img_name);
imagecopyresampled($compress_img,$dst_image,0,0,0,0,$file_width,$file_height,$file_width,$file_height);
$fn_name($compress_img,$compress_path.$img_name);
$fn_name($dst_image,$orig_path.$img_name);
echo "<img src='".$thumb_path.$img_name." ' /> <br>";
echo "<img src='".$compress_path.$img_name." ' /> <br>";
echo "<img src='".$orig_path.$img_name." ' /> <br>";
};