php图片无损压缩上传到七牛云

private $image;         //重绘图片private $imageinfo;     //重绘图片的具体信息(array)private $percent = 1;   //压缩比例,1为原像素比例
//上传接口--接收前端传递过来的图片文件
public function Upload(){$file = request()->file('image');if( !$file ) return return_msg('400','没有图片文件');// 要上传图片的本地路径$filePath = $file->getRealPath();// 对图片压缩重绘$this->_openImage($filePath);// 将重绘后的图片流赋值使用ob_start(); // Let's start output buffering.$fileName = $file->getInfo('name');$ext = pathinfo($fileName, PATHINFO_EXTENSION);  //后缀if( $ext == 'jpg' || $ext == 'jpeg' ){imagejpeg($this->image); //This will normally output the image, but because of ob_start(), it won't.}if( $ext == 'png' ){imagepng($this->image); //This will normally output the image, but because of ob_start(), it won't.}$contents = ob_get_contents(); //Instead, output above is saved to $contentsob_end_clean(); //End the output buffer.imagedestroy($this->image);if( !$contents ) return return_msg('400','压缩失败');// 上传文件流到七牛云return $this->QiniuUpload($fileName,$contents);}// 上传图片到七牛private function QiniuUpload($fileName,$result){$accessKey = config("qiniu")['accessKey'];$secretKey = config("qiniu")['secretKey'];$ext = pathinfo($fileName, PATHINFO_EXTENSION);  //后缀$key = md5($fileName.time()).'.'.$ext;// 构建鉴权对象$auth = new Auth($accessKey, $secretKey);// 要上传的空间$bucket = config("qiniu")['bucket'];$token = $auth->uploadToken($bucket);$domain = config("qiniu")['domain'];$uploadMgr = new UploadManager();
//        echo $key;// 调用 UploadManager 的 putFile 方法进行文件的上传--直接上传图片文件//list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);//图片文件流list($ret, $err) = $uploadMgr->put($token, $key, $result);if ($err !== null) {return return_msg('400',$err);}return json(['code'=>'200','msg'=>'七牛图片路径',"data"=>$key,"domain"=>$domain]);}/*** 内部:打开图片*/private function _openImage($src){//        list($width, $height, $type, $attr) = getimagesize($this->src);list($width, $height, $type, $attr) = getimagesize($src);$this->imageinfo = array('width'=>$width,'height'=>$height,'type'=>image_type_to_extension($type,false),'attr'=>$attr);$fun = "imagecreatefrom".$this->imageinfo['type'];
//        $this->image = $fun($this->src);$this->image = $fun($src);$this->_thumpImage();}/*** 内部:操作图片*/private function _thumpImage(){$new_width = $this->imageinfo['width'] * $this->percent;$new_height = $this->imageinfo['height'] * $this->percent;$image_thump = imagecreatetruecolor($new_width,$new_height);//绘制图片透明底色imagesavealpha($image_thump, true);$black = imagecolorallocate($image_thump, 0, 0, 0);imagefilledrectangle($image_thump, 0, 0, 150, 25, $black);$trans_colour = imagecolorallocatealpha($image_thump, 0, 0, 0, 127);imagefill($image_thump, 0, 0, $trans_colour);//将原图复制带图片载体上面,并且按照一定比例压缩,极大的保持了清晰度imagecopyresampled($image_thump,$this->image,0,0,0,0,$new_width,$new_height,$this->imageinfo['width'],$this->imageinfo['height']);imagedestroy($this->image);$this->image = $image_thump;}

php(TP5)图片无损压缩上传到七牛云相关推荐

  1. 通过图片地址上传到七牛云

    通过图片地址上传到七牛云 composer 安装 七牛云 PHP-SDK php composer.phar require qiniu/php-sdk <?php use Qiniu\Auth ...

  2. java 二维码与海报合成图片并上传至七牛云

    简单的二维码与图片合成 效果如下: 准备步骤: 第一步毋庸置疑准备图片 第二步整合二维码项目依赖(这里我们使用的是google.zxing,当然市面上开源的二维码项目很多,你可自行选择) GitHub ...

  3. html七牛云图片文件上传,使用Js将文件图片视频上传到七牛云详细教程-Fun言

    前言 因为项目需要,需要将一些较大文件上传到七牛云,以前都是通过数据流上传到服务端,然后在服务端进行上传操作,因为以前文件都很小所以无所谓,但是要是几百M的文件就不行了,所以就采用前端js直接上传到七 ...

  4. tp5文件异步上传入库+七牛云+预览图

    七牛云存储前提 composer require qiniu/php-sdk 然后七牛云官网 注册 注册 注册!!!! HTML 图片添加页面 <body> <form enctyp ...

  5. 调用图片文件夹中的任意图片随机显示_hexo框架下,实现图片一键式上传到七牛云

    在使用hexo框架驱动个人博客时,图片的插入是一个比较费心的事情 以我为例,我使用hexo+Github搭建个人独立博客 但是Github仓库提供的存储空间是有限的,如果把图片保存到本地(对应的是Gi ...

  6. java实现后台直接生成二维码图片并直接上传到七牛云上面

    java实现后台直接生成二维码图片并直接上传到七牛云上面 需求:后台是直接根据唯一核销码生成图片,然后的话直接上传到七牛云,数据库只是保存地址,一开始也想错了,想成了创建临时文件存储生成的图片再上传到 ...

  7. PHP图片加水印,然后将加水印的图片上传到七牛云

    今天项目有这么一个需求,简单实现了一下,当然用起来是没有任何问题的,现在把实现代码分享给小伙伴们 public function uploadImgToQiniu($picture_id){$wate ...

  8. 将base64编码图片上传到七牛云

    将base64编码图片上传到七牛云 接口说明 FAQ >对象存储 >上传下载> 如何上传base64编码图片到七牛云 在七牛云FAQ上有一篇文章,讲解的接口的使用 https://d ...

  9. 二维码生成并上传至七牛云 返回图片URL

    背景:最近一个项目的优惠券模块,需要将优惠券的券号转换成二维码展示出来,并保证能够被扫码枪识别. 接着,简要说明下编码思路,或者说步骤: 引入 qrcode 的Jar依赖 调用API,合理配置相关属性 ...

最新文章

  1. Python 2.7:字符串乱码问题的解决
  2. vue加跨域代理静态文件404_vue-cli 设置跨域代理 线上地址报404
  3. 令xtu3service开机时立即启动_Mac开机时可以使用的快捷键 苹果电脑快捷键使用介绍...
  4. 【翻译】Prometheus 2.4.0 新特性
  5. 使用JDBC完成数据的增删改查
  6. 46 - 算法 -Leetcode-141-环形链表-快慢指针
  7. 发展分布式光伏要理顺价格机制
  8. 开发者需要的 9 款代码比较工具
  9. JSON 的 MIME 类型
  10. shell 下 时间 的傻狍子
  11. 《开源安全运维平台OSSIM最佳实践》媒体推荐
  12. 度量满足条件——非负性、对称性和三角不等式
  13. HUAWEI 机试题:最长元音字串的长度
  14. 学python编程能做什么项目_十个Python练手的实战项目,学会这些Python就基本没问题了...
  15. 计算机键盘的功能键在哪,台式电脑home键在哪里(有关电脑按键作用介绍)
  16. centos7 应用笔记: fslint 文件查重
  17. KGE性能指标:MRR,MR,HITS@1,HITS@3,HITS@10
  18. 吃鸡ios和android灵敏度,2021吃鸡最佳灵敏度
  19. 【GaussDB数据库----连接】
  20. pandas读取某一列,并转换为列表

热门文章

  1. 自顶向下与自底向上的归并排序
  2. 如何用U盘拷贝4G以上的文件?
  3. layui树形菜单右键_layui-treetable
  4. 通过源码安装python
  5. 浅谈城市综合管廊分类及其运维管理
  6. KML中的颜色表示顺序是ABGR
  7. Node.js连接数据库 实现注册、登录、判断注册
  8. 使用UE5和Blender实现您的游戏关卡设计视频教程
  9. Day 250/300 《图解HTTP》读书笔记(二)
  10. C/C++仓库管理系统