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 相关文章推荐
DOMXML函数笔记
Oct 09 PHP
php下删除字符串中HTML标签的函数
Aug 27 PHP
PHP版国家代码、缩写查询函数代码
Aug 14 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
php绘制一个扇形的方法
Jan 24 PHP
codeigniter中实现一次性加载多个view的方法
Mar 20 PHP
php把大写命名转换成下划线分割命名
Apr 27 PHP
PHP实现的进度条效果详解
May 03 PHP
php array_pop 删除数组最后一个元素实例
Nov 02 PHP
浅谈PHP错误类型及屏蔽方法
May 27 PHP
php实现基于pdo的事务处理方法示例
Jul 21 PHP
PhpStorm+xdebug+postman调试技巧分享
Sep 15 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.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
thinkphp验证码显示不出来的解决方法
2014/03/29 PHP
PHP获取文件夹大小函数用法实例
2015/07/01 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
JavaScript的Cookies
2008/01/16 Javascript
extjs render 用法介绍
2013/09/11 Javascript
纯Javascript实现Windows 8 Metro风格实现
2013/10/15 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
javascript工厂方式定义对象
2014/12/26 Javascript
在JavaScript中处理时间之getHours()方法的使用
2015/06/10 Javascript
纯javascript响应式树形菜单效果
2015/11/10 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
Node.js之网络通讯模块实现浅析
2017/04/01 Javascript
JavaScript登录验证基础教程
2017/11/01 Javascript
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
vue实现简单图片上传
2020/06/30 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
2021/01/26 Vue.js
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
python日志记录模块实例及改进
2017/02/12 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
2019/08/27 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
Canvas实现放大镜效果完整案例分析(附代码)
2020/11/26 HTML / CSS
Nobody Denim官网:购买高级女士牛仔裤
2021/03/15 全球购物
C和C++经典笔试题附答案解析
2014/08/18 面试题
小学生推普周国旗下讲话稿
2014/09/21 职场文书
抗洪救灾标语
2014/10/08 职场文书
党员批评与自我批评
2014/10/15 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
会议主持词通用版
2019/04/02 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript
Nginx图片服务器配置之后图片访问404的问题解决
2022/03/21 Servers