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中常用编辑器推荐
Jan 02 PHP
PHP内核介绍及扩展开发指南―基础知识
Sep 11 PHP
php获取从百度搜索进入网站的关键词的详细代码
Jan 08 PHP
php+ajax实现无刷新分页的方法
Nov 04 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
Nov 04 PHP
php中magic_quotes_gpc对unserialize的影响分析
Dec 16 PHP
PHP使用array_merge重新排列数组下标的方法
Jul 22 PHP
PHP编写daemon process 实例详解
Nov 13 PHP
PHP获取数组中单列值的方法
Jun 10 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
Jul 19 PHP
Yii2框架可逆加密简单实现方法
Aug 25 PHP
浅析PHP数据导出知识点
Feb 17 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
PHP开发规范手册之PHP代码规范详解
2011/01/13 PHP
php curl选项列表(超详细)
2013/07/01 PHP
使用PHP编写的SVN类
2013/07/18 PHP
详解PHP PDO简单教程
2019/05/28 PHP
PHP连接MySQL数据库三种实现方法
2020/12/10 PHP
用Javscript实现表单复选框的全选功能
2007/05/25 Javascript
javascript 时间比较实现代码
2009/10/28 Javascript
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
2012/02/27 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
事件委托与阻止冒泡阻止其父元素事件触发
2014/09/02 Javascript
JavaScript实现动画打开半透明提示层的方法
2015/04/21 Javascript
Node.js的npm包管理器基础使用教程
2016/05/26 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
react-native使用leanclound消息推送的方法
2018/08/06 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
[01:11:08]Winstrike vs NB 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
python Django模板的使用方法(图文)
2013/11/04 Python
Python验证码识别处理实例
2015/12/28 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
Python3获取拉勾网招聘信息的方法实例
2019/04/03 Python
python元组的概念知识点
2019/11/19 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
2020/02/27 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
jupyter notebook实现显示行号
2020/04/13 Python
selenium自动化测试入门实战
2020/12/21 Python
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
医学院四年学习生活的自我评价
2013/11/06 职场文书
化工专业应届生求职信
2013/11/08 职场文书
打架检讨书100字
2014/01/19 职场文书
2014村务公开实施方案
2014/02/25 职场文书
2014年师德承诺书
2014/05/23 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
合作协议书格式
2014/08/19 职场文书
教师学期末个人总结
2015/02/13 职场文书