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通用检测函数集合
Nov 25 PHP
php 处理上百万条的数据库如何提高处理查询速度
Feb 08 PHP
PHP提取数据库内容中的图片地址并循环输出
Mar 21 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
Aug 21 PHP
显示程序执行时间php函数代码
Aug 29 PHP
ThinkPHP的MVC开发机制实例解析
Aug 23 PHP
Yii使用find findAll查找出指定字段的实现方法
Sep 05 PHP
CI框架装载器Loader.php源码分析
Nov 04 PHP
PHP实现根据时间戳获取周几的方法
Feb 26 PHP
PHP上传图片、删除图片简单实例
Nov 12 PHP
Laravel如何友好的修改.env配置文件详解
Jun 07 PHP
php实现简易计算器
Aug 28 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判断文件夹是否存在不存在则创建
2015/04/09 PHP
ThinkPHP模型详解
2015/07/27 PHP
php使用json-schema模块实现json校验示例
2019/09/28 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
JavaScript 学习笔记(四)
2009/12/31 Javascript
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
jQuery控制网页打印指定区域的方法
2015/04/07 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
2015/11/30 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
认识Knockout及如何使用Knockout绑定上下文
2015/12/25 Javascript
解析JavaScript面向对象概念中的Object类型与作用域
2016/05/10 Javascript
jquery实现垂直和水平菜单导航栏
2020/08/27 Javascript
leaflet的开发入门教程
2016/11/17 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
vue2中使用less简易教程
2018/03/27 Javascript
在微信小程序中使用vant的方法
2019/06/07 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
iview实现图片上传功能
2020/06/29 Javascript
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
Python实现的石头剪子布代码分享
2014/08/22 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
python爬虫项目设置一个中断重连的程序的实现
2019/07/26 Python
opencv设置采集视频分辨率方式
2019/12/10 Python
解决torch.autograd.backward中的参数问题
2020/01/07 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
简单了解Python write writelines区别
2020/02/27 Python
python中Django文件上传方法详解
2020/08/05 Python
如何在网站上添加谷歌定位信息
2016/04/16 HTML / CSS
采用怎样的方法保证数据的完整性
2013/12/02 面试题
汽车检测与维修专业求职信
2013/10/30 职场文书
护士求职推荐信范文
2013/11/23 职场文书
幼教求职信
2014/03/12 职场文书
新学期家长寄语2016
2015/12/03 职场文书