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 相关文章推荐
ThinkPHP中实例Model方法的区别说明
Aug 21 PHP
解析PHP汉字转换拼音的类
Jun 18 PHP
深入解析Session是否必须依赖Cookie
Aug 02 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
Aug 09 PHP
PHP加密函数 Javascript/Js 解密函数
Sep 23 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
Dec 17 PHP
php简单获取目录列表的方法
Mar 24 PHP
CodeIgniter钩子用法实例详解
Jan 20 PHP
Laravle eloquent 多对多模型关联实例详解
Nov 22 PHP
PHP通过curl获取接口URL的数据方法
May 31 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
Mar 18 PHP
yii2.0框架场景的简单使用示例
Jan 25 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
基于MySQL到MongoDB简易对照表的详解
2013/06/03 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
2010/04/20 Javascript
js 文件引入实现代码
2010/04/23 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
jQuery代码实现表格中点击相应行变色功能
2016/05/09 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
2016/05/25 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
利用JQuery直接调用asp.net后台的简单方法
2016/10/27 Javascript
解析jQueryEasyUI的使用
2016/11/22 Javascript
JS异步文件分片断点上传的实现思路
2016/12/25 Javascript
Vue响应式添加、修改数组和对象的值
2017/03/20 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
2017/11/09 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
2019/05/04 jQuery
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
vue项目开启Gzip压缩和性能优化操作
2020/10/26 Javascript
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
python学习之编写查询ip程序
2016/02/27 Python
Python网络编程 Python套接字编程
2017/09/13 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
python 重定向获取真实url的方法
2018/05/11 Python
python2与python3中关于对NaN类型数据的判断和转换方法
2018/10/30 Python
在IPython中进行Python程序执行时间的测量方法
2018/11/01 Python
python pandas生成时间列表
2019/06/29 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
2020/05/27 Python
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
PHP如何设置和取得Cookie值
2015/06/30 面试题
企业指导教师评语
2014/04/28 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
2015公务员试用期工作总结
2014/12/12 职场文书
离职告别感言
2015/08/04 职场文书
银行柜员工作心得体会
2016/01/23 职场文书
Nginx的基本概念和原理
2022/03/21 Servers