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 选项及相关信息函数库
Dec 04 PHP
Discuz!下Memcache缓存实现方法
May 28 PHP
php中大括号作用介绍
Mar 22 PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
Oct 08 PHP
php计算程序运行时间的简单例子分享
May 10 PHP
C#静态方法与非静态方法实例分析
Sep 22 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
PHP自毁程序(慎用)
Jul 09 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 PHP
PHP中in_array的隐式转换的解决方法
Mar 06 PHP
php微信公众号开发之翻页查询
Oct 20 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
Oct 30 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通用防注入程序 推荐
2011/02/26 PHP
php获取远程文件内容的函数
2015/11/02 PHP
老生常谈PHP面向对象之注册表模式
2017/05/26 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
php 输出缓冲 Output Control用法实例详解
2020/03/03 PHP
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
javasript实现密码的隐藏与显示
2015/05/08 Javascript
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
jquery动态切换背景图片的简单实现方法
2016/05/14 Javascript
怎么引入(调用)一个JS文件
2016/05/26 Javascript
浅析JavaScript函数的调用模式
2016/08/10 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
javascript中Date对象的使用总结
2016/11/21 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
Typescript的三种运行方式(小结)
2019/09/18 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
Python KMeans聚类问题分析
2018/02/23 Python
TensorFlow实现Logistic回归
2018/09/07 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
2018/12/12 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
高中教师评语大全
2014/04/25 职场文书
售后服务承诺书模板
2014/05/21 职场文书
民主评议党员个人总结
2015/02/13 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS
vue/cli 配置动态代理无需重启服务的方法
2022/05/20 Vue.js