PHP压缩图片功能的介绍


Posted in PHP onMarch 21, 2019

php程序开发中经常涉及到生成缩略图,利用php生成缩略图这个过程本身没难度,但是你知道php能够优化调节生成的缩略图的质量吗?也就是说php能够控制生成缩略图的清晰度以及生成后的缩略图的体积。下面我们就来看看如何利用php优化我们压缩后的图片。

对于如何使用php生成缩略图这里就不介绍了,大家可以参考本站下面这篇文章:PHP自动生成缩略图函数的源码示例

首先我们来看看用php压缩图片的程序代码:

<?php
header('Content-type: image/png');
$image=@imagecreatefrompng('//3water.com/test.png');
imagepng($image,'test.png',0); //注意后面那个数字0,这里即压缩等级,参数范围:0-9*/
imagedestroy($image);
?>

以上 imagepng 函数的第三个参数即是本篇文章所要分析的,这个参数的意思是生成图片的质量等级。这里可以分10个等级(0-9),0等级时即无压缩,图片不会失真,图片最清晰,但图片的体积也最大,随着压缩等级数字不断增大,图片会变得越来越不清晰,但压缩后图片的体积可以减少到原来的50%,压缩比还是挺大的。

下面看一个具体的例子吧,现在一个原图体积是125k,下面是经过不同压缩等级后的测试结果:

imagepng($img,null,0); --> Size = 225K
imagepng($img,null,1); --> Size = 85.9K
imagepng($img,null,2); --> Size = 83.7K
imagepng($img,null,3); --> Size = 80.9K
imagepng($img,null,4); --> Size = 74.6K
imagepng($img,null,5); --> Size = 73.8K
imagepng($img,null,6); --> Size = 73K
imagepng($img,null,7); --> Size = 72.4K
imagepng($img,null,8); --> Size = 71K
imagepng($img,null,9); --> Size = 70.6K

注意以上当压缩等级为0的时候,体积比原图还大的原因是原始图片其实是经过了轻微的压缩,而0等级的压缩就是一点压缩都没有,所以它的体积会大于原始图片。

根据以上结论和实际测试结果,得出的结论是在优化图片的时候,一般采用2等级比较合适,图片没有失真,但体积减少了30%,达到优化的目的了。如果采用6、7、8、9等级压缩的话,图片有所失真,而体积减少却不明显。所以不宜采用这些等级进行压缩优化图片。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

PHP 相关文章推荐
967 个函式
Oct 09 PHP
谈谈PHP语法(4)
Oct 09 PHP
php4的彩蛋
Oct 09 PHP
用PHP实现维护文件代码
Jun 14 PHP
Windows PHP5和Apache的安装与配置
Jun 08 PHP
php中Socket创建与监听实现方法
Jan 05 PHP
PHP结合jQuery实现找回密码
Jul 22 PHP
PHP实现递归复制整个文件夹的类实例
Aug 03 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
Oct 23 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
搜索附近的人PHP实现代码
Feb 11 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
Aug 19 PHP
PHP应用跨时区功能的实现方法
Mar 21 #PHP
PHP时间函数使用详解
Mar 21 #PHP
PHP抽象类与接口的区别详解
Mar 21 #PHP
PHP CURL使用详解
Mar 21 #PHP
使用ucenter实现多站点同步登录的讲解
Mar 21 #PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
Mar 21 #PHP
使用PHP反射机制来构造&quot;CREATE TABLE&quot;的sql语句
Mar 21 #PHP
You might like
PHP中使用mktime获取时间戳的一个黑色幽默分析
2012/05/31 PHP
php中current、next与reset函数用法实例
2014/11/17 PHP
JS获取IP、MAC和主机名的五种方法
2013/11/14 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
2014/08/22 Javascript
Jquery api 速查表分享
2015/01/12 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
Javascript实现计算个人所得税
2015/05/10 Javascript
javascript实现获取服务器时间
2015/05/19 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
2018/09/02 Javascript
vue+iview动态渲染表格详解
2019/03/19 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
[01:20]DOTA2更新全新英雄 天涯墨客现已加入游戏
2018/08/25 DOTA
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
全面了解python字符串和字典
2016/07/07 Python
使用apidocJs快速生成在线文档的实例讲解
2018/02/07 Python
python自动发邮件库yagmail的示例代码
2018/02/23 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
PyCharm更改字体和界面样式的方法步骤
2019/09/27 Python
详解python破解zip文件密码的方法
2020/01/13 Python
tensorflow 报错unitialized value的解决方法
2020/02/06 Python
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
Magee 1866官网:Donegal粗花呢外套和大衣专家
2019/11/01 全球购物
分布式数据库需要考虑哪些问题
2013/12/08 面试题
写给女生的道歉信
2014/01/14 职场文书
科级干部考察材料
2014/02/15 职场文书
假面舞会策划方案
2014/05/29 职场文书
幼儿园六一主持词
2015/06/30 职场文书
nginx常用命令放入shell脚本详解
2021/03/31 Servers
HTML+CSS 实现顶部导航栏菜单制作
2021/06/03 HTML / CSS