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初学入门
Nov 19 PHP
php 过滤危险html代码
Jun 29 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
Jul 19 PHP
php获取本地图片文件并生成xml文件输出具体思路
Apr 27 PHP
memcache命令启动参数中文解释
Jan 13 PHP
php实现批量修改文件名称的方法
Jul 23 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
Nov 30 PHP
基于PHP-FPM进程池探秘
Oct 17 PHP
PHP封装的mysqli数据库操作类示例
Feb 16 PHP
php apache开启跨域模式过程详解
Jul 08 PHP
PHP数组Key强制类型转换实现原理解析
Sep 01 PHP
PHP连接MySQL数据库三种实现方法
Dec 10 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发送html格式文本邮件的方法
2015/06/10 PHP
php post换行的方法
2020/02/03 PHP
PHP时间类完整代码实例
2021/02/26 PHP
JQuery 学习技巧总结
2010/05/21 Javascript
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
js Dialog 实践分享
2012/10/22 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
js 左右悬浮对联广告特效代码
2014/12/12 Javascript
jQuery实现美观的多级动画效果菜单代码
2015/09/06 Javascript
JS实现DIV容器赋值的方法
2015/12/14 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
通过JS获取Request.QueryString()参数的值实现方法
2016/09/27 Javascript
vue中el-upload上传图片到七牛的示例代码
2018/10/19 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
JavaScript中while循环的基础使用教程
2020/08/11 Javascript
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
Python3标准库总结
2019/02/19 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
tensorflow模型继续训练 fineturn实例
2020/01/21 Python
Python数据分析库pandas高级接口dt的使用详解
2020/12/11 Python
汇科协同Java笔试题
2012/03/31 面试题
J2EE面试题集锦(附答案)
2013/08/16 面试题
升职自荐信范文
2013/10/05 职场文书
旅游管理毕业生自荐书
2014/02/02 职场文书
辩论赛主持词
2014/03/18 职场文书
倡议书格式
2014/04/14 职场文书
小学假期安全广播稿
2014/09/28 职场文书
建议书范文
2015/02/05 职场文书
教师个人成长总结
2015/02/11 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技