PHP 按一定比例压缩图片,保持清晰度

图片压缩是我们日常开发中经常使用的操作,在如今需求很多的情况往往,上传的一张图片会被压缩成不同比例的图片,每次去操作也是一件非常繁琐的事情,于是进行了封装了一个压缩图片的操作类,希望大家遇到后,不用再为写很多压缩图片代码烦恼了。

压缩图片的工具类:

<?php  
/** 
 图片压缩操作类 
 v1.0 
*/  
   class Image{  
         
       private $src;  
       private $imageinfo;  
       private $image;  
       public  $percent = 0.1;  
       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){  
             
            $funcs = "image".$this->imageinfo['type'];  
            $funcs($this->image,$name.'.'.$this->imageinfo['type']);  
             
       }  
       /** 
       销毁图片 
       */  
       public function __destruct(){  
             
           imagedestroy($this->image);  
       }  
         
   }  
   
  
?> 


测试:

<?php  
          
        require 'image.class.php';  
        $src = "001.jpg";  
        $image = new Image($src);  
        $image->percent = 0.2;  
        $image->openImage();  
        $image->thumpImage();  
        $image->showImage();  
        $image->saveImage(md5("aa123"));  
  
  
?>  



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
======================================================== 服务器端解压操作说明: 1 用记事本打开 unzip.php ,在第二行,找到 “ $password = "isphp" ” 这一句, 将isphp 改成您的密码,等会解压时会要求输入。 2 将 unzip.php 上传到服务器端某个目录下,比如根目录。 3 运行 unzip.php, 看其给出的提示是否支持 zlib 库, 如果不支持,则在下面一步本地压缩时不要将"压缩成Gzip格式"选中。 4 在本机运行 phpZip.exe, 如果第3步中,unzip.php 提示说不支持zlib库,则不要选中 "压缩成Gzip格式", 否则压缩出的文件,在服务器端没法解压, 反之,如果支持的话,就选中,因为压缩成gz格式,可以大大减小文件大小。 5 运行 unzip.php,将刚才在本机压缩出的文件通过 unzip.php 上传,上传后会自动解压。 (也可以通过其它途径如 FTP 将文件上传到服务器,这样只要指定其位置即可。) ------------------------------------------------------- 服务器端打包下载操作说明 1 用记事本打开 unzip.php ,在第二行,找到 “ $password = "isphp" ” 这一句, 将isphp 改成您的密码,等会解压时会要求输入。 2 运行 zip.php , 输入想下载的目录,程序会给出一个链接, 点此链接(或者通过 FlashGet 一类工具) 就可以下载。 3 在本地运行 phpZip.exe 将下载下来的文件解压就行。 注: 如果想下载整个 zip.php 所在的当前目录,则输入 "." (点号) 即可。 这种情况下,在本地解压时,选择解压目的地时,最好选择一空的文件夹。 因为,当仅打包下载当前目录下的一个子目录时,在本地解压时, 程序会自动创建一个同名的文件夹, 而下载当前整个目录时,程序不会创建文件夹。 -------------------------------------------------------

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值