直接使用方法的  Upload($uploadimgfile)

就可以实现上传和压缩操作。

<?php

namespace Home\Controller;
final class Upload
{

//设置文件保存目录
    public $uploaddir = "Public/uploadimg/";
    //设置允许上传文件的类型
    public $type=array("jpg","gif","bmp","jpeg","png");

//获取文件后缀名函数
    public function fileext($filename)
    {
         return substr(strrchr($filename, '.'), 1);
    }

//生成随机文件名函数
    public function random($length)
    {
         $hash = 'CRP-'.date("mis");
         $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
         $max = strlen($chars) - 1;
         mt_srand((double)microtime() * 1000000);
         for($i = 0; $i < $length; $i++)
         {
              $hash .= $chars[mt_rand(0, $max)];
         }
         return $hash;
    }

public function Upload($uploadimgfile){
        //判断文件类型
        if(!in_array(strtolower($this->fileext($uploadimgfile['file']['name'])),$this->type))
        {
             $text=implode(",",$this->type);
             $ret_code=3;//文件类型错误
             $page_result=$text;
             $retArray = array('ret_code' => $ret_code,'page_result'=>$page_result);
             $retJson = json_encode($retArray);
             echo $retJson;
             return;
        }else{
            //生成目标文件的文件名
             $filename=explode(".",$_FILES['file']['name']);
             do
             {
                  $filename[0]=$this->random(8); //设置随机数长度
                  $name=implode(".",$filename);
                  $uploadfile=$this->uploaddir.$name;
             }while(file_exists($uploadfile));
          
             if(move_uploaded_file($uploadimgfile['file']['tmp_name'],$uploadfile)){
                  if(is_uploaded_file($uploadimgfile['file']['tmp_name'])){
                       $ret_code=1;//上传失败
                  }else {
                  //上传成功  处理图片大小 如果大于1M  就将图片进行压缩0.5
                      if($uploadimgfile["file"]['size'] > 1024 * 1024){
                          list($width,$height,$type)=getimagesize($uploadfile);
                          $i= 800 / $width;
                        $new_width = $width*$i;
                        $new_height =$height*$i;

if($uploadimgfile['file']['type'] == "image/pjpeg" || $uploadimgfile['file']['type'] == "image/jpg" || $uploadimgfile['file']['type'] == "image/jpeg"){
                          $im = imagecreatefromjpeg($uploadfile);
                        }elseif($uploadimgfile['file']['type'] == "image/png"){
                          $im = imagecreatefrompng($uploadfile);
                        }elseif($uploadimgfile['file']['type'] == "image/gif"){
                          $im = imagecreatefromgif($uploadfile);
                        }else{//默认jpg
                          $im = imagecreatefromjpeg($uploadfile);
                        }
                        if($im){
                            //开始压缩
                            $image_wp=imagecreatetruecolor($new_width, $new_height);
                            imagecopyresampled($image_wp, $im, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
                            imagejpeg($image_wp, $this->uploaddir.'S_'.$name,75);
                            imagedestroy($image_wp);
                        }
                    }
                      $ret_code=0;
                 }
            }
            $retArray = array('ret_code' => $ret_code);
            $retJson = json_encode($retArray);
            echo $retJson;
        }
    }

}

?>

PHP 图片上传 图片压缩相关推荐

  1. php 实现图片上传并压缩功能

    前段时间由于项目需要,要实现图片上传并且压缩生成缩略图的功能. 接口代码如下: $allowext = array ( 'png', 'jpg', 'jpeg', 'gif','mp4','doc') ...

  2. vue图片上传及压缩组件的封装

    vue图片上传及压缩组件的封装 源码地址 使用方法: 先去上面的链接把组件,复制到自己的components文件夹内 1.先下载 cnpm install compressorjs --save-de ...

  3. 移动端图片上传并生成图片(图片上传/图片压缩/图片绘制/Vue纯前端)

    如今用户上传图片,生成图保存分享这些都是h5页面的基操了吧,十分常见,实际操作起来也是满满的技能点,其实也有很多兼容问题的坑. 下面是以vue+elementUI做的一套,有需要的直接拿去- 如果有对 ...

  4. uniapp图片上传与压缩,兼容小程序与H5

    图片上传借助了Uview2.0的组件 <u-upload :fileList="imgs" :name="" @afterRead="after ...

  5. 淘淘商城第三天—完成商品添加功能 商品类目选择 图片上传 图片服务器搭建 kindEditor富文本编辑器的使用 商品添加功能

    1.实现商品类目选择功能 1.1需求 在商品添加页面,点击"选择类目"显示商品类目列表: 请求初始化树形控件的url:/item/cat/list 1.2 EasyUI tree数 ...

  6. form 表单 + HTML5(FileReader) +iframe 实现无刷新图片上传+图片预览效果

    作为一个初入前端的菜鸟,最近因为一个无刷新上传图片问题走了很多弯路,所以在这里给大家分享一下,不足之处希望谅解.无刷新上传图片一般有两种方式,一种是 form 表单+iframe ,还有一种是 aja ...

  7. html input type=file 文件上传; 图片上传; 图片闪烁

    (1)input file 对话框和 获取选中文件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...

  8. h5 ajax php 图片上传,图片上传生成海报H5技术详解

    我想很多经常做H5同学都会遇到过让用户上传照片的这种需求,那我这里给大家分享一些我常用的一些方法~废话不多时候,下面可以写一些干货,如果有更好的方法欢迎留言讨论! 首先,需要准备一些需要用到的东西. ...

  9. ecstore 图片上传 图片id写入数据库

    所有的图片信息,都存储在sdb_image_image表中.我们也可以将上传后的图片id写入到自己定义的表中. 主要的几个步骤: 1.加载的页面中写入图片上传的组件: <{toinput fro ...

  10. mui ajax 文件上传,MUI的图片上传和压缩

    MUI的上传图片目前知道有两种方式,一种见前面文章中关于图片裁切时使用的base64作为字符串上传,另外一种则是本篇章中所使用的plus.uploader方式,它是一种真正意义上的文件上传,我们可以使 ...

最新文章

  1. EXPDP 时ORA-27054 问题处置
  2. 网络数据被截取,该如何维权?
  3. 【CentOS】安装lnmp环境
  4. mnn c++ windows 调用实例
  5. redhat6.5 配置使用centos的yum源
  6. 批处理脚本, 读取文件并字符串替换
  7. Oracle 空间查询, 数据类型为 sdo_geometry
  8. python实现编辑距离,最长公共子序列,最长公共子串
  9. Linux系统中,各种小动物
  10. Atitit.异步编程技术原理与实践attilax总结
  11. c语言使用的编程环境是,啊哈C语言编程-第3课-C语言编程环境
  12. windows 控制台cmd乱码的解决办法
  13. 反编译之脱去乐固加固的壳
  14. 电路抗干扰设计——非常详细
  15. 【AI简报20210604期】意法半导体收购Cartesiam、10个顶级开源AI项目分享
  16. C语言中的void和void指针-void*
  17. Vue实现吸顶的效果
  18. 论接口自动化测试方法
  19. 知识产权审理庭解决方案
  20. 打印机上显示无法连接到服务器,服务器连接打印机无法连接到服务器

热门文章

  1. 外贸找客户软件:Email Extractor v7.2
  2. ieda永久破解!!!
  3. 经济筑底要看房市“脸色”
  4. db2 v9权威指南_花颜男妃(生子)
  5. SAP中ABAP的生产订单调用BAPI进行投料BAPI_GOODSMVT_CREATE(根据生产订单号进行投料,可以修改物料数量)
  6. 《百面机器学习》学习笔试之模型评估(第2章)
  7. trove mysql 镜像_openstack trove 数据库镜像构建列表
  8. HTML+css+js实现网页时钟、全网做得最好的时钟!
  9. 【密码学】HMAC与HS256算法
  10. java吸血鬼数字_吸血鬼数字的简单实现