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和ACCESS写聊天室(六)
Oct 09 PHP
php基础知识:类与对象(2) 自动加载对象
Dec 13 PHP
php5.2时间相差8小时
Jan 15 PHP
给php新手谈谈我的学习心得
Feb 25 PHP
PHP中str_replace函数使用小结
Oct 11 PHP
超级实用的7个PHP代码片段分享
Jan 05 PHP
php编写的简单页面跳转功能实现代码
Nov 27 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
Nov 04 PHP
对PHP PDO的一些认识小结
Jan 23 PHP
Nginx环境下PHP flush失效的解决方法
Oct 19 PHP
laravel 框架结合关联查询 when()用法分析
Nov 22 PHP
PHP isset()及empty()用法区别详解
Aug 29 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中通过ADO调用Asscess数据库和COM程序
2006/10/09 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
js实现的GridView即表头固定表体有滚动条且可滚动
2014/02/19 Javascript
邮箱下拉自动填充选择示例代码附图
2014/04/03 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
2014/10/17 Javascript
JavaSacript中charCodeAt()方法的使用详解
2015/06/05 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
谷歌Chrome浏览器扩展程序开发小记
2016/01/06 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
如何构建 vue-ssr 项目的方法步骤
2020/08/04 Javascript
python标准日志模块logging的使用方法
2013/11/01 Python
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
Windows安装Python、pip、easy_install的方法
2017/03/05 Python
python脚本调用iftop 统计业务应用流量的思路详解
2019/10/11 Python
如何使用pandas读取txt文件中指定的列(有无标题)
2020/03/05 Python
Python内置异常类型全面汇总
2020/05/28 Python
python连接mysql有哪些方法
2020/06/24 Python
python中@contextmanager实例用法
2021/02/07 Python
解析HTML5的存储功能和web SQL的相关操作方法
2016/02/19 HTML / CSS
Charles & Colvard官网:美国莫桑石品牌
2019/06/05 全球购物
全球工业:Global Industrial
2020/02/01 全球购物
中软Java笔试题
2012/11/11 面试题
海量信息软件测试笔试题
2015/08/08 面试题
司机的工作范围及职责
2013/11/13 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书
微软官方消息,在 2023 年 4 月 11 日之后微软将不再为 Office 2013 和 Skype for Business 2015 提供安全更新
2022/04/21 数码科技
Windows server 2012搭建FTP服务器
2022/04/29 Servers
nginx 配置缓存
2022/05/11 Servers