hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 文章 - 后端开发 - 正文 看Cosplay古风插画小姐姐,合集图集打包下载:炫龙网 · 炫龙图库

php怎样完成图片紧缩的同时坚持清晰度_后端开发

2019-12-15后端开发ki4网36°c
A+ A-

直接展现细致代码:

免费进修视频教程分享:php视频教程

<?php
 
/**
 * 图片紧缩类:经由过程缩放来紧缩。假如要坚持源图比例,把参数$percent坚持为1即可。
 * 纵然原比例紧缩,也可大幅度减少。数码相机4M图片。也能够缩为700KB摆布。假如减少比例,则体积会更小。
 * 效果:可保留、可直接显现。
 */
class imgCompression{
 
       private $src;
       private $image;
       private $imageinfo;
       private $percent = 0.5;
       /**
        * 图片紧缩
        * @param $src 源图
        * @param float $percent  紧缩比例
        */
       public function __construct($src, $percent=1)
       {
              $this->src = $src;
              $this->percent = $percent;
       }
 
 
       /** 高清紧缩图片
        * @param string $saveName  供应图片名(可不带扩展名,用源图扩展名)用于保留。或不供应文件名直接显现
        */
       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;
       }
       /**
        * 输出图片:保留图片则用saveImage()
        */
       private function _showImage()
       {
              header('Content-Type: image/'.$this->imageinfo['type']);
              $funcs = "image".$this->imageinfo['type'];
              $funcs($this->image);
       }
       /**
        * 保留图片到硬盘:
        * @param  string $dstImgName  1、可指定字符串不带后缀的称号,运用源图扩展名 。
        * 2、直接指定目的图片名带扩展名。
        */
       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);
       }
 
}

// eg:
$source = 'img.jpg';//原图
$dst_img = 'img1.jpg'; //可加寄存途径
$percent = 1;  //紧缩比例 原图紧缩,不缩放

$image = new imgCompression($source,$percent);
$image->compressImg($dst_img);

?>

相干文章教程引荐:php教程

以上就是php怎样完成图片紧缩的同时坚持清晰度的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
php怎样完成图片紧缩的同时坚持清晰度_后端开发

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>