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 3行代码的分页算法(求起始页和结束页)
Oct 21 PHP
IP138 IP地址查询小偷实现代码
Feb 15 PHP
php设计模式 Builder(建造者模式)
Jun 26 PHP
C/S和B/S两种架构区别与优缺点分析
Oct 23 PHP
关于PHP开发的9条建议
Jul 27 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
Jun 05 PHP
php简单统计中文个数的方法
Sep 30 PHP
探究Laravel使用env函数读取环境变量为null的问题
Dec 06 PHP
利用php-cli和任务计划实现刷新token功能的方法
May 03 PHP
PHP实现的观察者模式实例
Jun 21 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
Dec 28 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 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新手上路(七)
2006/10/09 PHP
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
2006/10/09 PHP
一个php导出oracle库的php代码
2009/04/20 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
dedecms函数分享之获取某一栏目所有子栏目
2014/05/19 PHP
PHP文件锁函数flock()详细介绍
2014/11/18 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
Document对象内容集合(比较全)
2010/09/06 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
jQuery简单动画变换效果实例分析
2016/07/04 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
2016/11/03 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
2018/01/24 Javascript
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
py中的目录与文件判别代码
2008/07/16 Python
Python中的列表知识点汇总
2015/04/14 Python
详解Python发送邮件实例
2016/01/10 Python
python下os模块强大的重命名方法renames详解
2017/03/07 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
Python三种遍历文件目录的方法实例代码
2018/01/19 Python
Python使用MD5加密算法对字符串进行加密操作示例
2018/03/30 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
英国奢侈品网站:MatchesFashion
2016/12/16 全球购物
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
沙龙级头发造型工具:FOXYBAE
2018/07/01 全球购物
新加坡最佳婴儿用品店:Mamahood.com.sg
2018/08/26 全球购物
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
兼职业务员岗位职责
2014/01/01 职场文书
药品采购员岗位职责
2014/02/08 职场文书
教育实践活动对照检查材料
2014/09/23 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
学校2016年九九重阳节活动总结
2016/04/01 职场文书
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python