好奇心是最强大的驱动力
阿泽
//首先封装一个图片类<?php/**图片压缩操作类*/namespace Img;class Compression{private $src;//图片路径private $imageinfo;private $image;public $percent = 0.5;//压缩比[0.5较为合适]public function __construct($src){$this->src = $src;}/**打开图片*/public function openImage(){list($width, $height, $type, $attr) = getimagesize($this->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);}/**操作图片*/public function thumpImage(){$new_width = $this->imageinfo['width'] * $this->percent;$new_height = $this->imageinfo['height'] * $this->percent;$image_thump = imagecreatetruecolor($new_width,$new_height);//将原图复制带图片载体上面,并且按照一定比例压缩,极大的保持了清晰度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;}/**输出图片*/public function showImage(){header('Content-Type: image/'.$this->imageinfo['type']);$funcs = "image".$this->imageinfo['type'];$funcs($this->image);}/**保存图片到硬盘*/public function saveImage($name){if(empty($name)) return false;$allowImgs = ['.jpg', '.jpeg', '.png', '.bmp', '.wbmp','.gif']; //如果目标图片名有后缀就用目标图片扩展名 后缀,如果没有,则用源图的扩展名$dstExt = strrchr($name ,".");$sourseExt = strrchr($this->src ,".");if(!empty($dstExt)) $dstExt =strtolower($dstExt);if(!empty($sourseExt)) $sourseExt =strtolower($sourseExt);//有指定目标名扩展名if(!empty($dstExt) && in_array($dstExt,$allowImgs)){$dstName = $name;}elseif(!empty($sourseExt) && in_array($sourseExt,$allowImgs)){$dstName = $name.$sourseExt;}else{$dstName = $name.$this->imageinfo['type'];}$funcs = "image".$this->imageinfo['type'];$funcs($this->image,$dstName);}/**销毁图片*/public function __destruct(){imagedestroy($this->image);}}
<?php//使用tp6自带上传实现图片压缩//可实现6mb图上传得到200kb高清压缩图public function test(Request $request){// 获取表单上传文件 例如上传了001.jpg$file = request()->file('file');// 上传到本地服务器$fileName = Filesystem::putFile('upload/api/img', $file);$src = config('app.url').$fileName;//$src = 'http://pic1.win4000.com/wallpaper/b/57c79dd38f0cb_270_185.jpg';//后缀$ext = substr(strrchr($src, '.'), 1);//压缩$image = new Img\Compression($src);$image->openImage();$image->thumpImage();$new_file_name = md5(mt_rand(100000,9999999));$image->saveImage('./upload/api/img/'.date('Ymd').'/'.$new_file_name);unlink($fileName);//删除原图$res = config('app.url').'api/img/'.date('Ymd').'/'.$new_file_name.'.'.$ext;return $this->success($res);}
文章转载自牧码人日记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




