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 Session变量不能传送到下一页的解决方法
Nov 27 PHP
php date与gmdate的获取日期的区别
Feb 08 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
Aug 05 PHP
PHP 清空varnish 缓存的详解(包括指定站点下的)
Jun 20 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
Jun 28 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
Jun 28 PHP
php object转数组示例
Jan 15 PHP
php事务处理实例详解
Jul 11 PHP
用PHP代码给图片加水印
Jul 01 PHP
PHP实现正则表达式分组捕获操作示例
Feb 03 PHP
php项目中类的自动加载实例讲解
Sep 12 PHP
微信小程序发送订阅消息的方法(php 为例)
Oct 30 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
Smarty+QUICKFORM小小演示
2007/02/25 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
2014/04/17 PHP
PHP针对JSON操作实例分析
2015/01/12 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
php生成二维码图片方法汇总
2016/12/17 PHP
yii2 上传图片的示例代码
2018/11/02 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
2020/05/02 PHP
Prototype使用指南之string.js
2007/01/10 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
Javascript中拼接大量字符串的方法
2015/02/05 Javascript
理解javascript中DOM事件
2015/12/25 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
jQuery实现的两种简单弹窗效果示例
2018/04/18 jQuery
vue组件jsx语法的具体使用
2018/05/21 Javascript
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
解决iview table组件里的 固定列 表格不自适应的问题
2020/11/13 Javascript
Python3 翻转二叉树的实现
2019/09/30 Python
python科学计算之narray对象用法
2019/11/25 Python
Python如何用filter函数筛选数据
2020/03/05 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
2020/05/27 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
python中time.ctime()实例用法
2021/02/03 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
《梅兰芳学艺》教学反思
2014/02/24 职场文书
模特大赛策划方案
2014/05/28 职场文书
网站推广策划方案
2014/06/04 职场文书
节约能源标语
2014/06/17 职场文书
Nginx缓存设置案例详解
2021/09/15 Servers
javascript的setTimeout()使用方法总结
2021/11/20 Javascript