PHP把JPEG图片转换成Progressive JPEG的方法


Posted in PHP onJune 30, 2014

JPEG文件格式有两种保存方式。他们是Baseline JPEG和Progressive JPEG.

两种格式有相同尺寸以及图像数据,他们的扩展名也是相同的,唯一的区别是二者显示的方式不同。

Baseline JPEG

这种类型的JPEG文件存储方式是按从上到下的扫描方式,把每一行顺序的保存在JPEG文件中。打开这个文件显示它的内容时,数据将按照存储时的顺序从上到下一行一行的被显示出来,直到所有的数据都被读完,就完成了整张图片的显示。如果文件较大或者网络下载速度较慢,那么就会看到图片被一行行加载的效果,这种格式的JPEG没有什么优点,因此,一般都推荐使用Progressive JPEG

Progressive JPEG

和Baseline一遍扫描不同,Progressive JPEG文件包含多次扫描,这些扫描顺寻的存储在JPEG文件中。打开文件过程中,会先显示整个图片的模糊轮廓,随着扫描次数的增加,图片变得越来越清晰。这种格式的主要优点是在网络较慢的情况下,可以看到图片的轮廓知道正在加载的图片大概是什么。在一些网站打开较大图片时,你就会注意到这种技术。

如果你的网速和蜗牛一样的话,你应该可以看到效果的,其实你在qzone、微博等大型网站你会经常看到这样的效果的。

PHP代码也可以将其进行转换成Progressive 的jpg。

<?php

 

$im = imagecreatefromjpeg('file.jpg');

// 设置隔行扫描 设定了隔行扫描比特标记而图像使用 JPEG 格式,则图像被创建为渐进式 JPEG。 php手册

imageinterlace($im, 1);

imagejpeg($im, './outfile.jpg', 80);

imagedestroy($im);

 

?>

我怎么看图片到底是Progressive 还是Baseline 格式呢?

我目前知道就是使用ImageMagick软件带的identity命令进行查看图像资源

identify -verbose outfile.jpg

如果你看到有一个属性为Interlace:JPEG则是Progressive 图片。

PHP 相关文章推荐
php 从数据库提取二进制图片的处理代码
Sep 09 PHP
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
Nov 27 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
Jun 18 PHP
Codeigniter实现多文件上传并创建多个缩略图
Jun 12 PHP
详解PHP的Yii框架中日志的相关配置及使用
Dec 08 PHP
Zend Framework教程之Application用法实例详解
Mar 14 PHP
Yii实现简单分页的方法
Apr 29 PHP
PHP cURL获取微信公众号access_token的实例
Apr 28 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
PHP设计模式之委托模式定义与用法简单示例
Aug 13 PHP
解决Laravel自定义类引入和命名空间的问题
Oct 15 PHP
PHP7 参数处理机制修改
Mar 09 PHP
PHP把小数转成整数3种方法
Jun 30 #PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
Jun 29 #PHP
php防止伪造的数据从URL提交方法
Jun 27 #PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
Jun 27 #PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
Jun 27 #PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
Jun 27 #PHP
php使用GeoIP库实例
Jun 27 #PHP
You might like
PHP版网站缓存加快打开速度的方法分享
2012/06/03 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
PHP加密解密类实例代码
2016/07/20 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
javascript 贪吃蛇实现代码
2008/11/22 Javascript
响应鼠标变换表格背景或者颜色的代码
2009/03/30 Javascript
为原生js Array增加each方法
2012/04/07 Javascript
Javascript变量作用域详解
2013/12/06 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
jQuery实现购物车计算价格功能的方法
2015/03/25 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
2016/06/12 Javascript
js+css3制作时钟特效
2016/10/16 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
javascript编写简易计算器
2017/05/06 Javascript
Vue.js添加组件操作示例
2018/06/13 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
微信小程序实现下拉框功能
2019/07/16 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
Vue 中使用lodash对事件进行防抖和节流操作
2020/07/26 Javascript
windows下安装python paramiko模块的代码
2013/02/10 Python
python使用循环实现批量创建文件夹示例
2014/03/25 Python
python2与python3共存问题的解决方法
2018/09/18 Python
python爬虫超时的处理的实例
2018/12/19 Python
Python多进程方式抓取基金网站内容的方法分析
2019/06/03 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
2021/01/29 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
HTML5中Canvas与SVG的画图原理比较
2013/01/16 HTML / CSS
HTML5里的placeholder属性使用实例和美化显示效果的方法
2014/04/23 HTML / CSS
领导的自我鉴定
2013/12/28 职场文书
《春笋》教学反思
2014/04/15 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书