最新公告
  • 欢迎您光临三优资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 转载一篇php压缩图片,非常好用,一次性成功了,开心

    <?php
    
    /**
     * 图片压缩类:通过缩放来压缩。
     * 如果要保持源图比例,把参数$percent保持为1即可。
     * 即使原比例压缩,也可大幅度缩小。数码相机4M图片。也可以缩为700KB左右。如果缩小比例,则体积会更小。
     *
     * 结果:可保存、可直接显示。
     */
    class imgcompress{
        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);
        }
    }
    $source =  '123.png';//原图片名称
    $dst_img = 'text.png';//压缩后图片的名称
    $percent = 1;  #原图压缩,不缩放,但体积大大降低
    $image = (new imgcompress($source,$percent))->compressImg($dst_img);
    1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!3165260857@qq.com
    2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
    3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
    4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!


    三优资源网 » 转载一篇php压缩图片,非常好用,一次性成功了,开心

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    三优资源网
    一个高级程序员模板开发平台

    发表评论

    • 232会员总数(位)
    • 1269资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 1577稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情