PHP按一定比例压缩图片的方法


Posted in PHP onOctober 12, 2018

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

压缩图片的工具类:

<?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"));
 
 
?>

结果:

PHP按一定比例压缩图片的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP session常见问题集锦及解决办法总结
Mar 18 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
Jul 18 PHP
PHP持久连接mysql_pconnect()函数使用介绍
Feb 05 PHP
php类常量的使用详解
Jun 08 PHP
关于crontab的使用详解
Jun 24 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
Mar 11 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
Jan 05 PHP
php生成酷炫的四个字符验证码
Apr 22 PHP
thinkphp验证码的实现(form、ajax实现验证)
Jul 28 PHP
PHP依赖注入原理与用法分析
Aug 21 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 PHP
WordPress伪静态规则设置代码实例
Dec 10 PHP
PHP实现图片压缩
Sep 09 #PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
Oct 12 #PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
Oct 12 #PHP
PHP解析url并得到url参数方法总结
Oct 11 #PHP
详细对比php中类继承和接口继承
Oct 11 #PHP
PHP JWT初识及其简单示例
Oct 10 #PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
Oct 10 #PHP
You might like
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
PHP数组循环操作详细介绍 附实例代码
2013/02/03 PHP
PHP将回调函数作用到给定数组单元的方法
2014/08/19 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
Javascript中的数学函数
2007/04/04 Javascript
jquery显示和隐藏div特效实例
2013/02/27 Javascript
javaScript实现浮点数转十六进制字符
2013/10/29 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
JavaScript中模拟实现jsonp
2015/06/19 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
jQuery中trigger()与bind()用法分析
2015/12/18 Javascript
一览画面点击复选框后获取多个id值的方法
2016/05/30 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
js转html实体的方法
2016/09/27 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
详解JS对象封装的常用方式
2016/12/30 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
详解vue 在移动端体验上的优化解决方案
2019/05/20 Javascript
从Python的源码来解析Python下的freeblock
2015/05/11 Python
Python中用altzone()方法处理时区的教程
2015/05/22 Python
python开发中range()函数用法实例分析
2015/11/12 Python
实时获取Python的print输出流方法
2019/01/07 Python
Python3使用PySynth制作音乐的方法
2019/09/09 Python
python实现udp传输图片功能
2020/03/20 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
html5构建触屏网站之touch事件介绍
2013/01/07 HTML / CSS
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
UNOde50美国官网:西班牙珠宝品牌
2020/08/15 全球购物
单位办理社保介绍信
2014/01/10 职场文书
Python使用scapy模块发包收包
2021/05/07 Python
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL