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 相关文章推荐
杏林同学录(六)
Oct 09 PHP
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
Sep 09 PHP
php对大文件进行读取操作的实现代码
Jan 23 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
Jun 29 PHP
PHP生成等比缩略图类和自定义函数分享
Jun 25 PHP
PHP中通过trigger_error触发PHP错误示例
Jun 23 PHP
Linux系统中为php添加pcntl扩展
Aug 28 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
Oct 08 PHP
Yii2中多表关联查询hasOne hasMany的方法
Feb 15 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
Mar 15 PHP
PHP+jQuery实现双击修改table表格功能示例
Feb 21 PHP
PHP常量define和const的区别详解
May 18 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/05/19 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
php 变量引用与变量销毁机制详细介绍
2016/12/05 PHP
php实现微信企业转账功能
2018/10/02 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
通过身份证号得到出生日期和性别的js代码
2009/11/23 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
微信小程序页面开发注意事项整理
2017/05/18 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
详解webpack性能优化——DLL
2017/10/20 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
详解基于React.js和Node.js的SSR实现方案
2019/03/21 Javascript
JS中注入eval, Function等系统函数截获动态代码
2019/04/03 Javascript
python 多线程应用介绍
2012/12/19 Python
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
Python for循环中的陷阱详解
2018/07/13 Python
python3 线性回归验证方法
2019/07/09 Python
Python hashlib和hmac模块使用方法解析
2020/12/08 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
pip install命令安装扩展库整理
2021/03/02 Python
html5基础标签(html5视频标签 html5新标签用法)
2013/12/30 HTML / CSS
澳洲国民品牌乡村路折扣店:Country Road & Trenery Outlet
2018/04/19 全球购物
财务会计专业毕业生自荐信
2013/10/19 职场文书
高校自主招生自荐信
2013/12/09 职场文书
初三学生个人自我评定
2014/04/06 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
幼儿园中班班级总结
2015/08/10 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang
如何使用Tkinter进行窗口的管理与设置
2021/06/30 Python
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL