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. 语言转4字节数据整型_R语言与RGui平台_数据类型_向量_4
  2. ubuntu 远程访问mysql_Ubuntu下远程访问MySQL数据库
  3. 【运筹学】表上作业法 ( 求初始基可行解 | 最小元素法 )
  4. poj3261(求至少出现k次的可重叠的子串的长度)
  5. map内置函数分析所得到的思路
  6. 八十四、SpringBoot微服务Dubbo和Zookeeper分布式
  7. [BUUCTF-pwn]——wustctf2020_name_your_dog
  8. OpenLayers 官网例子的中文详解
  9. 关于 Orbeon form PE 版本使用 JavaScript Embedding API 的一个例子
  10. 6.824 Raft lesson4 2020(一)
  11. link st 量产工具_ST-Link资料03_ST-Link固件升级、驱动下载安装方法
  12. 爬虫-获取登陆可见页面技术小结-三种方式的比较
  13. web.config 学习之httpHandler
  14. Flutter图像绘制原理深入分析
  15. errgroup 分析
  16. JAVA里plain_Java中POJO及其细分XO、DAO的概念
  17. 推荐计算机科学类的经典书籍
  18. win10安装wireshark经常报“KB2999226 和 KB3118401”补丁未安装的问题
  19. DJ音乐盒-专注DJ
  20. netcfg_route_netstat_setprop 等命令的使用

热门文章

  1. 虚拟机:host-only
  2. UE4虚幻引擎关于小地图制作教程
  3. Windows+Linux等双系统的卸载
  4. 简单的说一下pinia吧
  5. 用“黄金圈法则”,谈谈互联网实习
  6. [Vue]学习笔记目录 【Vue2与Vue3完结】 (尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通)
  7. 深度学习Deep Learning 中文版下载
  8. 钉钉小程序引入colorUI
  9. Arduino VS/HX1838红外遥控接收和发送DEMO
  10. 瑞利、莱斯与Nakagami-m信道衰落模型