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 图像处理类1
Jun 15 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
Oct 25 PHP
Memcached常用命令以及使用说明详解
Jun 27 PHP
对于PHP 5.4 你必须要知道的
Aug 07 PHP
PHP无限分类(树形类)
Sep 28 PHP
PHP file_get_contents设置超时处理方法
Sep 30 PHP
使用PHP导出Redis数据到另一个Redis中的代码
Mar 12 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
PHP中读取文件的8种方法和代码实例
Aug 05 PHP
WordPress中自定义后台管理界面配色方案的小技巧
Dec 29 PHP
php 实现一个字符串加密解密的函数实例代码
Nov 01 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 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
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
CentOS下PHP安装Oracle扩展
2015/02/15 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
jquery设置控件位置的方法
2013/08/21 Javascript
ExtJS4中的requires使用方法示例介绍
2013/12/03 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
使用mint-ui开发项目的一些心得(分享)
2017/09/07 Javascript
简述JS控制台的使用
2018/07/15 Javascript
Vue filter 过滤当前时间 实现实时更新效果
2019/12/20 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
jquery实现有过渡效果的tab切换
2020/07/17 jQuery
利用Python实现网络测试的脚本分享
2017/05/26 Python
Python爬虫DOTA排行榜爬取实例(分享)
2017/06/13 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
python MNIST手写识别数据调用API的方法
2018/08/08 Python
python 实现一次性在文件中写入多行的方法
2019/01/28 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
HTML5中的强制下载属性download使用实例解析
2016/05/12 HTML / CSS
struct与class的区别
2014/02/03 面试题
出纳员的岗位职责
2014/02/22 职场文书
大跃进口号
2014/06/16 职场文书
销售员试用期自我评价
2014/09/15 职场文书
2014大学生党员评议个人总结
2014/09/22 职场文书
党的群众路线教育实践活动个人整改措施范文
2014/11/04 职场文书
党性分析材料格式
2014/12/19 职场文书
顶岗实习协议书
2015/01/29 职场文书
单位介绍信格式范文
2015/05/04 职场文书
2016年八一建军节活动总结
2016/04/05 职场文书
HTML基础详解(上)
2021/10/16 HTML / CSS
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server