<?php
class IMG
{
public $res;
public $thumb_path;
/**上传大图
* @param $name 传上来的图片名
* @param string $path 保存路径
* @param string $size 限制的大小
* @param array $type 允许的图片类型
* @return mixed
*/
public function upload($name, $path = '../uploads/', $size = '1048576', $type = array('jpg', 'png', 'jpeg', 'gif'))
{
$error = $_FILES[$name]['error'];
if ($error > 0 || $_FILES[$name]['size'] > $size) {
$this->res['msg'] = '文件超过规定大小,请重新上传';
$this->res['error'] = 1; //规定1为错误代码
return $this->res;
}
//文件类型判断
$path_arr = pathinfo($_FILES[$name]['name']);//路径数组
$ext = $path_arr['extension'];//获取文件的后缀
if (!in_array($ext, $type)) {
$this->res['msg'] = '文件类型错误,请重新上传';
$this->res['error'] = 1;
return $this->res;
}
//创建目录
$tmpdir = date('Y-m-d', time());
$dir = rtrim($path, '/') . '/' . $tmpdir; //拼接好的路径
//如果目录不存在,则创建
if (!is_dir($dir)) {
mkdir($dir, 0777, true);
}
//文件名
$file_name = time() . mt_rand(0, 99999); //时间戳拼接一个随机数作为文件名
$file = $file_name . '.' . $ext; //文件名拼接后缀(完整文件名)
//保存文件到目录
$upload = move_uploaded_file($_FILES[$name]['tmp_name'], $dir . '/' . $file);
if ($upload) {
$this->res['msg'] = '上传成功';
$this->res['error'] = 2; //规定上传成功代码为2
$this->res['path'] = $dir . '/' . $file;
$this->res['name'] = $file;
return $this->res;
}
}
/**上传缩略图
* @param $src_addr 大图片地址
* @param $des_w 要生成的缩略图宽
* @param $des_h 要生成的缩略图宽
* @param $path 生成后存放的路径
* @param $thumb_name 生成后的图片名
* @return string
*/
public function thumb($src_addr, $des_w, $des_h, $path, $thumb_name)
{
//1. 先获取大图片的信息
$src_info = getimagesize($src_addr);
$src_w = $src_info[0]; //原图宽
$src_h = $src_info[1]; //原图宽
//2. 创建一张新图片,参数(图片路径)作为等下的缩略图
if ($src_info[2] == 1) {
$des_img = imagecreatefromgif($src_addr);
} else if ($src_info[2] == 2) {
$des_img = imagecreatefromjpeg($src_addr);
} else if ($src_info[2] == 3) {
$des_img = imagecreatefrompng($src_addr);
}
//3. 新建一个真彩色图像,参数(缩略图的宽,高)
$img_new = imagecreatetruecolor($des_w, $des_h);
//4. 拷贝部分图像并调整大小
imagecopyresized($img_new, $des_img, 0, 0, 0, 0, $des_w, $des_h, $src_w, $src_h);
//6. 创建缩略图文件存放目录
$tmpdir = date('Y-m-d', time());
$dir = rtrim($path, '/') . '/' . $tmpdir; //拼接好的路径
if (!is_dir($dir)) {
mkdir($dir, 0777, true);
}
//7. 保存图片
$this->thumb_path = $dir . '/thumb_' . $thumb_name;
imagejpeg($img_new, $this->thumb_path, 80);
//8. 释放内存
imagedestroy($img_new);
return $this->thumb_path;
}
}
?>