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 相关文章推荐
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
Oct 09 PHP
一步一步学习PHP(3) php 函数
Feb 15 PHP
IP138 IP地址查询小偷实现代码
Feb 15 PHP
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
May 07 PHP
php图片加水印原理(超简单的实例代码)
Jan 18 PHP
深入密码加salt原理的分析
Jun 06 PHP
PHP的魔术常量__METHOD__简介
Jul 08 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
Aug 21 PHP
PHP中STDCLASS用法实例分析
Nov 11 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 PHP
php批量删除操作代码分享
Feb 26 PHP
php 多个变量指向同一个引用($b = &amp;$a)用法分析
Nov 13 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翻页跳转功能实现方法
2020/11/30 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
javascript中的previousSibling和nextSibling的正确用法
2015/09/16 Javascript
JavaScript操作选择对象的简单实例
2016/05/16 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
2016/05/19 Javascript
JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)
2016/06/12 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
基于vue中css预加载使用sass的配置方式详解
2018/03/13 Javascript
Vue刷新修改页面中数据的方法
2018/09/16 Javascript
jQuery 选择器用法基础入门示例
2020/01/04 jQuery
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
python+opencv实现动态物体识别
2018/01/09 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
对Python函数设计规范详解
2019/07/19 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
Python图像阈值化处理及算法比对实例解析
2020/06/19 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
新百伦折扣店:Joe’s New Balance Outlet
2016/08/20 全球购物
加热夹克:RAVEAN
2018/10/19 全球购物
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
英国景点门票网站:attractiontix
2019/08/27 全球购物
2014年创卫实施方案
2014/02/18 职场文书
2015年护士节慰问信
2015/03/23 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers