php上传生成图片,php 上传图片自动生成缩略图
发布日期:2021-06-24 19:28:18 浏览次数:11 分类:技术文章

本文共 3642 字,大约阅读时间需要 12 分钟。

uploads.php文件

缩略图的宽度

private $thumb_height; //缩略图的高度

private $cut;   //是否剪切图片到指定高度

private $tmp;   //上传图片的临时地址

private $error;

private $im;   // 创建一个临时的图片句柄

private $new_name;  //上传文件的新名字

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 "%%%

";

}

if(is_uploaded_file($this->tmp)){

if(move_uploaded_file($this->tmp, $this->new_name)){

echo "文件上传成功

";

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文件中得配置

";

break;

case 2:

echo "上传文件的大小超过了表单中的限制大小

";

break;

case 3:

echo "只有部分文件被上传

";

break;

case 4:

echo "没有文件被上传

";

break;

case 6:

echo "php.ini中没有设置图片存放的临时未知

";

break;

case 7:

echo "硬盘不可以写入,上传失败

";

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();

}

?>

转载地址:https://blog.csdn.net/weixin_34262786/article/details/115171166 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java多线程方式轮询,多线程 – 轮询无锁队列的最快的无竞争方法是什么?
下一篇:Php url生成,php怎么自动将url生成链接并提取title

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月18日 15时40分03秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章