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 信息采集程序代码
Mar 17 PHP
PHP的单引号和双引号 字符串效率
May 27 PHP
使用php实现截取指定长度
Aug 06 PHP
php switch语句多个值匹配同一代码块的实现
Mar 03 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
Jun 25 PHP
PHP curl实现抓取302跳转后页面的示例
Jul 04 PHP
Joomla数据库操作之JFactory::getDBO用法
May 05 PHP
PHP实现的一致性Hash算法详解【分布式算法】
Mar 31 PHP
php-fpm服务启动脚本的方法
Apr 27 PHP
Django中通过定时任务触发页面静态化的处理方式
Aug 29 PHP
php面向对象程序设计入门教程
Jun 22 PHP
laravel5表单唯一验证的实例代码
Sep 30 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
IIS6的PHP最佳配置方法
2007/03/19 PHP
PHP中使用gettext来支持多语言的方法
2011/05/02 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
Javascript 复制数组实现代码
2009/11/26 Javascript
13 个JavaScript 性能提升技巧分享
2012/07/26 Javascript
jQuery语法总结和注意事项小结
2012/11/11 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
2015/10/21 Javascript
原生JS实现图片翻书效果
2017/02/16 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
Python中map和列表推导效率比较实例分析
2015/06/17 Python
简单谈谈python中的Queue与多进程
2016/08/25 Python
python生成式的send()方法(详解)
2017/05/08 Python
详解Python自建logging模块
2018/01/29 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
对python3新增的byte类型详解
2018/12/04 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
关于Python 的简单栅格图像边界提取方法
2019/07/05 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
读取nii或nii.gz文件中的信息即输出图像操作
2020/07/01 Python
Django配置跨域并开发测试接口
2020/11/04 Python
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
国外平面设计素材网站:The Hungry JPEG
2017/03/28 全球购物
英国领先的葡萄酒专家:Majestic Wine
2017/05/30 全球购物
门卫人员岗位职责
2013/12/24 职场文书
中国梦口号
2014/06/13 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
2014年教师思想工作总结
2014/12/03 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
人与自然观后感
2015/06/16 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书
MySQL 存储过程的优缺点分析
2021/05/20 MySQL