经常会用到把上传的大图片压缩,特别是体积,在微信等APP应用上,也默认都是有压缩的,那么,怎么样对图片大幅度压缩却仍能保持较高的清晰度呢?

压缩通常是有按比例缩放,和指定宽度压缩的,效果很不错,一个数码相机拍的4M图片,压缩后保持了较高的清晰度和原图宽高值,只有700K。

下面是本站的一个PHP图片缩放类。如果需要指定宽度和高度值的缩放,则需要另一个thumb类,thumb类已取代本类。

使用方法:

Php代码:

$source =  'test.jpg';
$dst_img = 'test_111.jpg';
$percent = 1;  #原图压缩,不缩放,但体积大大降低
$image = (new imgcompress($source,$percent))->compressImg($dst_img);  

相关类文件如下,保存为imgcompress.class.php :

<?php  /** * 图片压缩类:通过缩放来压缩。
* 如果要保持源图比例,把参数$percent保持为1即可。
* 即使原比例压缩,也可大幅度缩小。数码相机4M图片。也可以缩为700KB左右。如果缩小比例,则体积会更小。 *   * 结果:可保存、可直接显示。 */
class imgcompress{  private $src;  private $image;  private $imageinfo;  private $percent = 0.5;  /** * 图片压缩 * @param $src 源图 * @param float $percent  压缩比例 */  public function __construct($src, $percent=1)  {  $this->src = $src;  $this->percent = $percent;  }  /** 高清压缩图片 * @param string $saveName  提供图片名(可不带扩展名,用源图扩展名)用于保存。或不提供文件名直接显示 */  public function compressImg($saveName='')  {  $this->_openImage();  if(!emptyempty($saveName)) $this->_saveImage($saveName);  //保存  else $this->_showImage();  }  /** * 内部:打开图片 */  private 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);  $this->_thumpImage();  }  /** * 内部:操作图片 */  private 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;  }  /** * 输出图片:保存图片则用saveImage() */  private function _showImage()  {  header('Content-Type: image/'.$this->imageinfo['type']);  $funcs = "image".$this->imageinfo['type'];  $funcs($this->image);  }  /** * 保存图片到硬盘: * @param  string $dstImgName  1、可指定字符串不带后缀的名称,使用源图扩展名 。2、直接指定目标图片名带扩展名。 */  private function _saveImage($dstImgName)  {  if(emptyempty($dstImgName)) return false;  $allowImgs = ['.jpg', '.jpeg', '.png', '.bmp', '.wbmp','.gif'];   //如果目标图片名有后缀就用目标图片扩展名 后缀,如果没有,则用源图的扩展名  $dstExt =  strrchr($dstImgName ,".");  $sourseExt = strrchr($this->src ,".");  if(!emptyempty($dstExt)) $dstExt =strtolower($dstExt);  if(!emptyempty($sourseExt)) $sourseExt =strtolower($sourseExt);  //有指定目标名扩展名  if(!emptyempty($dstExt) && in_array($dstExt,$allowImgs)){  $dstName = $dstImgName;  }elseif(!emptyempty($sourseExt) && in_array($sourseExt,$allowImgs)){  $dstName = $dstImgName.$sourseExt;  }else{  $dstName = $dstImgName.$this->imageinfo['type'];  }  $funcs = "image".$this->imageinfo['type'];  $funcs($this->image,$dstName);  }  /** * 销毁图片 */  public function __destruct(){  imagedestroy($this->image);  }  } 

PHP怎样大幅度降低图片大小但最大程度保持图片清晰?相关推荐

  1. 实现图片大小的自动控制( 图片大小控制CSS代码)

    图片大小控制CSS代码 将以下代码放到你的样式表文件中即可实现图片大小的自动控制. /*图片大小控制CSS By Tekin */ img,a img{ border:0; margin:0; pad ...

  2. 怎样设置图片大小php,php调整图片大小的方法

    php调整图片大小的方法 发布时间:2020-06-12 16:37:04 来源:亿速云 阅读:136 作者:小新 本篇文章和大家了解一下php调整图片大小的方法.有一定的参考价值,有需要的朋友可以参 ...

  3. android+怎么分享图片大小,Android微信分享图片大于32k进行压缩

    微信分享视频的时候,需要传一个图片数组,大小不能大于32k. 解决方案:使用Bitmap自带的compress方法解决了这个问题. 源码如下: package com.example.test; im ...

  4. 解决md导入CSDN中图片大小过大 改变图片的大小

    问题描述: 本人喜欢使用 typora 写笔记,但是每次一到上传博客就会变得十分头疼,尤其是图片的问题!!!比如我们现在上传一张图片: 这个图片的尺寸是不是太大了!!! 解决: 其实,当你拖入图片的时 ...

  5. php 截取图片大小,PHP截取指定图片大小的方法

    这篇文章主要介绍了PHP截取指定图片大小的方法,可实现对指定图片的缩放与截取功能,是非常实用的技巧,需要的朋友可以参考下 本文实例讲述了PHP截取指定图片大小的方法.分享给大家供大家参考.具体分析如下 ...

  6. Word2019 如何快速统一图片大小,将其他图片设置为参照图片大小

    1.首先选择一张图片,点击格式菜单,找到大小模块的下角标,点击弹出布局大小的设置. 2.然后将缩放部分的 锁定纵横比以及相对原始图片大小的勾选去掉,此处可以按照需求调节高德以及宽度的值,点击确定按钮. ...

  7. 如何压缩图片大小?简单的图片压缩方法分享

    怎么压缩图片的大小呢?在日常生活中,我们经常需要在社交媒体上或者其他场合分享和使用照片,但是如果照片文件内存过大,上传或发送速度很慢,有的情况下还会出现上传失败的情况.遇到这种事情我们就需要将图片的大 ...

  8. 怎么扩大图片大小?如何调整图片大小不变形?

    做广告设计的小伙伴在修改图片尺寸的时候,会发现图片扩大(在线修改图片尺寸大小工具-压缩图)之后变形了,那么该怎么避免图片改大小后宽高比例改变呢?选择一款好用的图片尺寸修改工具至关重要,下面就带大家一起 ...

  9. img 错误样式css,css设置图片大小_css 控制img图片的大小样式

    摘要 腾兴网为您分享:css 控制img图片的大小样式,掌上财富,优品多多,问作业,淘客联盟等软件知识,以及手机游戏开挂神器,au补丁,局域网监测,苹果录屏专家,重复文件删除,易通教育,章鱼输入法,爱 ...

最新文章

  1. 编译安装apr 1.5.2 时报 rm: cannot remove `libtoolT': No such file or directory
  2. 【Fragment】管理机制
  3. python opencv 画矩形框 外接矩形
  4. 位操作——整数用位存储
  5. 【论文解读】A Survey on Visual Transformer及引文理解
  6. 网站计数器 web映射
  7. WIFI无线路由器的五种工作模式
  8. 【Java从0到架构师】MyBatis - 多表查询_延迟加载
  9. [翻译]Chameleon介绍(6) : 动作控件
  10. JavaScript 设计模式 —— 单例模式
  11. java读写word模板_Java操作Word模板插入列表
  12. 彩云之巅(一) 回忆的牵绊
  13. gluster部署和使用
  14. MongoDB系列之添加账号和密码
  15. Oracle PLSQL
  16. 关于OnCreate和OnDraw
  17. 从程序员到项目经理(5):程序员加油站 -- 不是人人都懂的学习要点--------转自西西吹雪...
  18. python获取期货数据_股票超过压力位
  19. android zuk彩蛋,联想ZUK Z2你真的会玩吗?来看U-Touch 2.0的那些小彩蛋
  20. 【JS 逆向百例】层层嵌套!某加速商城 RSA 加密

热门文章

  1. python 自动化测试(2):针对密码输入框为密码控件时的解决方案
  2. 自定义View实战(一) 汽车速度仪表盘
  3. 格斗类游戏的键盘处理
  4. 计算机学院写论文格式,写作计算机论文的标准格式是什么
  5. RTX3080 Ti 怎么样 RTX3080 Ti性能相当于什么水平
  6. 《伪样本新场景样本挖掘和适应》
  7. 电网设备股集体上涨,国家电网称将推进电网数字化转型
  8. 泰科 | 高压连接革命!CSJ高压连接器与您共赢电动汽车新时代
  9. 企业邮箱哪家最优惠?企业邮箱最优惠价格来了
  10. WIN10极限清理 C盘空间