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 相关文章推荐
一个oracle+PHP的查询的例子
Oct 09 PHP
分页显示Oracle数据库记录的类之二
Oct 09 PHP
phpMyAdmin下载、安装和使用入门教程
May 31 PHP
深入解析php之apc
May 15 PHP
解析PHP中的unset究竟会不会释放内存
Jul 18 PHP
教你识别简单的免查杀PHP后门
Sep 13 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
Jan 14 PHP
微信 getAccessToken方法详解及实例
Nov 23 PHP
PHP清除缓存的几种方法总结
Sep 12 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
Oct 16 PHP
关于laravel5.5的定时任务详解(demo)
Oct 23 PHP
关于PHP数组迭代器的使用方法实例
Nov 17 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
在PHP3中实现SESSION的功能(一)
2006/10/09 PHP
PHP has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
php strftime函数的详细用法
2018/06/21 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
2020/04/06 PHP
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
js中cookie的添加、取值、删除示例代码
2013/10/21 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
js实现非常棒的弹出div
2016/10/06 Javascript
jQuery+HTML5实现弹出创意搜索框层
2016/12/29 Javascript
js保留两位小数方法总结
2018/01/31 Javascript
微信小程序实现聊天对话(文本、图片)功能
2018/07/06 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
python实现时间o(1)的最小栈的实例代码
2018/07/23 Python
python json.loads兼容单引号数据的方法
2018/12/19 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
Python图像处理库PIL中图像格式转换的实现
2020/02/26 Python
详解Python 函数参数的拆解
2020/09/02 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
接口中的方法可以是abstract的吗
2015/07/23 面试题
大学社团计划书
2014/05/01 职场文书
网吧消防安全责任书
2014/07/29 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
2014年后勤工作总结
2014/11/18 职场文书
社区服务活动报告
2015/02/05 职场文书
士兵突击观后感
2015/06/16 职场文书
2015七夕情人节宣传语
2015/07/14 职场文书
财务管理制度范本
2015/08/04 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers
Canvas绘制像素风图片的示例代码
2021/09/25 HTML / CSS