这篇文章将为大家详细讲解有关使用php怎么压缩图片并保持大小不变,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
cdn静态资源包
oss管理文件资源,不一定是图片,也可以是文件哦
搭建自己的文件服务器,图片当然可以了
不过以上好是好,不过都得花钱,我感觉还是从根本上解决比较好,来吧,那我们就上代码把
<?php class imgcompress{ private $srcurlurl; private $image; private $imageinfo; private $percent = 0.5; public function __construct($srcurl, $percent=1) { $this->src = $srcurl; $this->percent = $percent; } public function compressImg($saveName='') { $this->_openImage(); if(!empty($saveName)) $this->_saveImage($saveName); //保存 else $this->_showImage(); } private 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); $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); //将原图复制到图片载体上面,并且按照一定比例压缩,极大的保持了清晰度 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; } private function _showImage() { header('Content-Type: image/'.$this->imageinfo['type']); $funcs = "image".$this->imageinfo['type']; $funcs($this->image); } private function _saveImage($dstImgName) { if(empty($dstImgName)) return false; $allowImgs = ['.jpg', '.jpeg', '.png', '.bmp', '.wbmp','.gif']; //如果目标图片名有后缀就用目标图片扩展名 后缀,如果没有,则用源图的扩展名 $dstExt = strrchr($dstImgName ,"."); $sourseExt = strrchr($this->src ,"."); if(!empty($dstExt)) $dstExt =strtolower($dstExt); if(!empty($sourseExt)) $sourseExt =strtolower($sourseExt); //有指定目标名扩展名 if(!empty($dstExt) && in_array($dstExt,$allowImgs)){ $dstName = $dstImgName; }elseif(!empty($sourseExt) && in_array($sourseExt,$allowImgs)){ $dstName = $dstImgName.$sourseExt; }else{ $dstName = $dstImgName.$this->imageinfo['type']; } $funcs = "image".$this->imageinfo['type']; $funcs($this->image,$dstName); } public function __destruct(){ imagedestroy($this->image); }}$source = '1.jpg';//原图片名称$dst_img = 'text.png';//压缩后图片的名称$percent = 1; #原图压缩,不缩放,但体积大大降低$image = (new imgcompress($source,$percent))->compressImg($dst_img);//新图片名字叫什么名字可以自己定
关于使用php怎么压缩图片并保持大小不变就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。