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 相关文章推荐
php access 数据连接与读取保存编辑数据的实现代码
May 12 PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
Oct 12 PHP
php小型企业库存管理系统的设计与实现代码
May 16 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
Nov 07 PHP
屏蔽机器人从你的网站搜取email地址的php代码
Nov 14 PHP
php修改NetBeans默认字体的大小
Jul 02 PHP
PHP统计二维数组元素个数的方法
Nov 12 PHP
PHP函数strip_tags的一个bug浅析
May 22 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
May 12 PHP
PHP实现生成带背景的图形验证码功能
Oct 03 PHP
PHP输出多个元素的排列或组合的方法
Mar 14 PHP
Yii2处理密码加密及验证的方法
May 12 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中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
php自动加载的两种实现方法
2010/06/21 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
PHP类的封装与继承详解
2015/09/29 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
2012/02/03 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
2013/01/22 Javascript
jquery数据验证插件(自制,简单,练手)实例代码
2013/10/24 Javascript
javascript获取选中的文本的方法代码
2013/10/30 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
jQuery中的一些常见方法小结(推荐)
2016/06/13 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
详解从react转职到vue开发的项目准备
2019/01/14 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
使用graphics.py实现2048小游戏
2015/03/10 Python
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
Python实现对百度云的文件上传(实例讲解)
2017/10/21 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
Djang的model创建的字段和参数详解
2019/07/27 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
Python实现快速排序的方法详解
2019/10/25 Python
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
白莲教口号
2014/06/18 职场文书
出国留学英文自荐信
2015/03/25 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
2021/05/06 MySQL
Python Pygame实战在打砖块游戏的实现
2022/03/17 Python