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初学者头痛的十四个问题
Jul 12 PHP
在 PHP 中使用随机数的三个步骤
Oct 09 PHP
一个ubbcode的函数,速度很快.
Oct 09 PHP
基于mysql的论坛(5)
Oct 09 PHP
微博短链接算法php版本实现代码
Sep 15 PHP
PHP中函数rand和mt_rand的区别比较
Dec 26 PHP
ThinkPHP中where()使用方法详解
Apr 19 PHP
PHP二维数组去重实例分析
Nov 18 PHP
PDO::errorCode讲解
Jan 28 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
Jul 24 PHP
PHP优化之批量操作MySQL实例分析
Apr 23 PHP
Laravel中Kafka的使用详解
Mar 24 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 操作数组(合并,拆分,追加,查找,删除等)
2012/07/20 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
解决Extjs4中form表单提交后无法进入success函数问题
2013/11/26 Javascript
javascript实现简单的省市区三级联动
2015/05/14 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
如何使用jquery修改css中带有!important的样式属性
2016/04/28 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
vue综合组件间的通信详解
2017/11/06 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
跟老齐学Python之深入变量和引用对象
2014/09/24 Python
简单实现python爬虫功能
2015/12/31 Python
python 队列详解及实例代码
2016/10/18 Python
Python学习入门之区块链详解
2017/07/25 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
python中多个装饰器的调用顺序详解
2019/07/16 Python
Python获取时间戳代码实例
2019/09/24 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
Python安装并操作redis实现流程详解
2020/10/13 Python
python自动生成sql语句的脚本
2021/02/24 Python
Too Faced官网:美国知名彩妆品牌
2017/03/07 全球购物
DNA基因检测和分析:23andMe
2019/05/01 全球购物
美国亚马逊旗下男装网站:East Dane(支持中文)
2019/09/25 全球购物
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
大学生创业感言
2014/01/25 职场文书
党员创先争优承诺书
2014/03/26 职场文书
副乡长群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
高中生期中考试失利检讨书
2014/10/23 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
解除租房协议书
2014/12/03 职场文书
学习心得体会
2019/06/20 职场文书
SQL注入的实现以及防范示例详解
2021/06/02 MySQL
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS