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 相关文章推荐
The specified CGI application misbehaved by not returning a complete set of HTTP headers
Mar 31 PHP
PHP中nowdoc和heredoc使用需要注意的一点
Mar 21 PHP
php自定义urlencode,urldecode函数实例
Mar 24 PHP
深入理解PHP内核(一)
Nov 10 PHP
PHP设计模式之迭代器模式
Jun 17 PHP
php封装的验证码工具类完整实例
Oct 19 PHP
php实现连接access数据库并转txt写入的方法
Feb 08 PHP
php 三大特点:封装,继承,多态
Feb 19 PHP
php面向对象程序设计入门教程
Jun 22 PHP
php+js实现的无刷新下载文件功能示例
Aug 23 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
Mar 02 PHP
php7 list()、session及其他模块的修改实例分析
May 25 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
Terran历史背景
2020/03/14 星际争霸
PHP学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
一个php短网址的生成代码(仿微博短网址)
2014/05/07 PHP
PHP实现操作redis的封装类完整实例
2015/11/14 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
2017/08/10 PHP
php5.x禁用eval的操作方法
2018/10/19 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
2020/09/17 PHP
JQuery下的Live方法和$.browser方法使用代码
2010/06/02 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
JavaScript基于ajax编辑信息用法实例
2015/07/15 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
2016/10/16 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
Node 代理访问的实现
2019/09/19 Javascript
vue监听用户输入和点击功能
2019/09/27 Javascript
vue项目中定义全局变量、函数的几种方法
2019/11/08 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
2020/08/04 Javascript
Python协程的用法和例子详解
2017/09/09 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
Python3安装Pillow与PIL的方法
2019/04/03 Python
Python中的With语句的使用及原理
2020/07/29 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
仓管员岗位职责范文
2013/11/08 职场文书
师德师风个人反思
2014/04/28 职场文书
2015年中秋晚会主持稿
2015/07/30 职场文书
关于golang高并发的实现与注意事项说明
2021/05/08 Golang
JS前端使用canvas实现物体的点选示例
2022/08/05 Javascript