php 上传图片自动生成缩略图
一款实现的生成小图功能的实现代码,有需要的朋友可以参考,每个都有详细的说明参数,php 上传图片自动生成缩略图实例代码如下:
<form action="uploads.php" method="post" enctype="multipart/form-data"> <input type='file' name='image'><br> <input type='submit' name='sub' value='提交'> </form> //uploads.php文件 <?php class image_upload { private $srcimg; //原图片 private $destimg; // 目标图片 private $width; //原图片的宽度 private $height; //原图片的高度 private $type; //原文件的图片类型 private $thumb_width; //缩略图的宽度 private $thumb_height; //缩略图的高度 private $cut; //是否剪切图片到指定高度 private $tmp; //上传图片的临时地址 private $error; private $im; // 创建一个临时的图片句柄 private $new_name; //上传文件的新名字 //开源代码phprm.com function __construct($srcimg, $t_width, $t_height, $cut, $tmp, $error) { $this->srcimg = $srcimg; $this->thumb_width = $t_width; $this->thumb_height = $t_height; $this->cut = $cut; $this->tmp = $tmp; $this->error = $error; $this->get_srcimg_type(); $this->get_new_upload_name(); } function img_upload() { //文件上传的方法 $this->check_error($this->error); $this->in_type(); $dst_dir = './images'; if (!is_dir($dst_dir)) { mkdir($dst_dir); echo "%%%<BR>"; } if (is_uploaded_file($this->tmp)) { if (move_uploaded_file($this->tmp, $this->new_name)) { echo "文件上传成功<br>"; return true; } else { echo '文件不能被移动,上传失败'; exit; } } else { echo '文件上传可能被攻击'; exit; } } function make_thumbnail() { //生成缩略图的方法 $this->get_dest_imgpath(); $this->make_im(); $this->width = imagesx($this->im); $this->height = imagesy($this->im); $thumb_ratio = $this->thumb_width / $this->thumb_height; $ratio = $this->width / $this->height; if ($this->cut == 1) { //是否裁剪 if ($ratio >= $thumb_ratio) { $img = imagecreatetruecolor($this->thumb_width, $this->thumb_height); imagecopyresampled($img, $this->im, 0, 0, 0, 0, $this->thumb_width, $this->thumb_height, $this->height * $thumb_ratio, $this->height); imagejpeg($img, $this->destimg); echo "缩略图生成成功"; } else { $img = imagecreatetruecolor($this->thumb_width, $this->thumb_height); imagecopyresampled($img, $this->im, 0, 0, 0, 0, $this->thumb_width, $this->thumb_height, $this->width, $this->width / $thumb_ratio); imagejpeg($img, $this->destimg); echo "缩略图生成成功"; } } else { if ($ratio >= $thumb_ratio) { $img = imagecreatetruecolor($this->thumb_height * $thumb_ratio, $this->thumb_height); imagecopyresampled($img, $this->im, 0, 0, 0, 0, $this->thumb_height * $thumb_ratio, $this->thumb_height, $this->width, $this->height); imagejpeg($img, $this->destimg); echo "缩略图生成成功"; } else { $img = imagecreatetruecolor($this->thumb_width, $this->thumb_width / $thumb_ratio); imagecopyresampled($img, $this->im, 0, 0, 0, 0, $this->thumb_width, $this->thumb_width / $thumb_ratio, $this->width, $this->height); imagejpeg($img, $this->destimg); echo "缩略图生成成功"; } } imagedestroy($this->im); imagedestroy($img); } private function check_error($error) { //检查文件上传传得错误; if ($error > 0) { switch ($error) { case 1: echo "上传文件的大小超过了PHP.INI文件中得配置<br>"; break; case 2: echo "上传文件的大小超过了表单中的限制大小<br>"; break; case 3: echo "只有部分文件被上传<br>"; break; case 4: echo "没有文件被上传<br>"; break; case 6: echo "php.ini中没有设置图片存放的临时未知<br>"; break; case 7: echo "硬盘不可以写入,上传失败<br>"; break; default: echo "未知错误"; break; } } } private function get_srcimg_type() { //判断源文件的图片类型 $this->type = substr(strrchr($this->srcimg, '.') , '1'); } private function in_type() { //检查文件是否符合类型 $type_arr = array( 'gif', 'jpg', 'png' ); if (!in_array($this->type, $type_arr)) { echo "只支持PNG,GIF,JPG 三种类型的文件格式……,请重新上传正确的格式"; exit; } } private function get_new_upload_name() { //上传的文件生成新的名字 $this->new_name = 'images/' . date('YmdHis') . '.' . $this->type; } private function make_im() { //从原文件新建一幅图像 switch ($this->type) { case 'jpg': $this->im = imagecreatefromjpeg($this->new_name); break; case 'gif': $this->im = imagecreatefromgif($this->new_name); break; case 'png': $this->im = imagecreatefrompng($this->new_name); break; } } private function get_dest_imgpath() { //得到缩略图的存储路径 $len1 = strlen($this->new_name); $len2 = strlen(strrchr($this->new_name, '.')); $len3 = $len1 - $len2; $this->destimg = substr($this->new_name, 0, $len3) . '_small.' . $this->type; } } print_r($_FILES); $file = $_FILES['image']; echo $file['name']; $uploads = new image_upload($file['name'], 120, 160, 1, $file['tmp_name'], $file['error']); if ($uploads->img_upload()) { $uploads->make_thumbnail(); }
文章网址:http://www.phprm.com/tuxiang/fs4427.html
随意转载^^但请附上教程地址。