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源代码
Oct 09 PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
Jun 30 PHP
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
Dec 16 PHP
php中explode与split的区别介绍
Oct 03 PHP
php中如何使对象可以像数组一样进行foreach循环
Aug 09 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
Jan 03 PHP
PHP操作文件的一些基本函数使用示例
Nov 18 PHP
php输入数据统一类实例
Feb 23 PHP
php实现字符串反转输出的方法
Mar 14 PHP
php使用COPY函数更新配置文件的方法
Jun 18 PHP
php显示页码分页类的封装
Jun 08 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
Nov 03 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中PDO的错误处理
2011/09/04 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
带你了解PHP7 性能翻倍的关键
2015/11/19 PHP
学习php设计模式 php实现观察者模式(Observer)
2015/12/09 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
2016/05/27 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
2019/06/03 PHP
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
JS远程获取网页源代码实例
2013/09/05 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
jQuery css() 方法动态修改CSS属性
2016/09/25 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
Bootstrap3 多选和单选框(checkbox)
2016/12/29 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
浅谈手写node可读流之流动模式
2018/06/01 Javascript
使用vue完成微信公众号网页小记(推荐)
2019/04/28 Javascript
浅谈对于react-thunk中间件的简单理解
2019/05/01 Javascript
在layui中select更改后生效的方法
2019/09/05 Javascript
JS实现可视化音频效果的实例代码
2020/01/16 Javascript
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
Python中字典的基础知识归纳小结
2015/08/19 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
Django contrib auth authenticate函数源码解析
2020/11/12 Python
python实现b站直播自动发送弹幕功能
2021/02/20 Python
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
实习教师自我鉴定
2013/09/27 职场文书
企业文明单位申报材料
2014/05/16 职场文书
物资采购方案
2014/06/12 职场文书
员工教育培训协议书
2014/09/27 职场文书
Python数据分析之pandas函数详解
2021/04/21 Python
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS
spring 项目实现限流方法示例
2022/07/15 Java/Android