渐进式jpeg(progressive jpeg)图片及其相关

标签: web综合 gif jpeg photoshop png | 发表时间:2013-01-07 18:21 | 作者:张 鑫旭
出处:http://www.zhangxinxu.com/wordpress

by zhangxinxu from http://www.zhangxinxu.com
本文地址: http://www.zhangxinxu.com/wordpress/?p=2916

一、基本JPEG(baseline jpeg)和渐进JPEG

网络上那些色色的照片都是 .jpg格式的(“色色”指的是色彩斑斓的意思 )。

不知诸位有没有注意到,这些 jpg格式的图片在呈现的时候,有两种方式,一种是自上而下扫描式的,还有一种就是先是全部的模糊图片,然后逐渐清晰(就像GIF格式的交错显示),例如下面的示意(图片来源: http://codinghorror.typepad.com):

一般线性加载(如不能显示 点击这里查看)

交错/渐进式(若无法显示 点击这里查看)

你网站的 jpg图片是以何种方式呈现的呢?

我猜你是“自上而下扫描式”的,擦擦~

我在贴吧看海贼火影漫画时候,时不时会发现,其中部分图片就是渐进式加载的,如下截图:
海贼王 最危险的男人

图片的尺寸大小
同一张 jpg图片,如果保存为基本式和渐进式那个尺寸更小呢?

根据我拿3终不同风格图片做测试,发现,百度百科中所说的渐进式图片的大小比基本式的小是不准确的。

其中,两者大小关系基本上没有什么规律。下面是我的测试结果:

图片缩略图 测试结果
图片品质59%及其以下时候,渐进JPEG图片更小;品质60%及其以上,基本JPEG更小
图片品质82%及其以上时候,渐进JPEG图片更小;品质81%及其以下,基本JPEG更小
无论图片品质多少,都是渐进JPEG图片更小

不过,个人臆测,从概率学上讲,大多数情况下,渐进式JPEG比基本式图片尺寸小一点。然而,其中的大小差异与原图尺寸相比,不值一提,因此,所谓图片大小不能作为两种图片选择的依据。

下载呈现速度
一个名叫 Ann Robson的人,最近对各个浏览器下渐进式图片呈现做了测试。

下图为FireFox浏览器下呈现速度的对比图:
乳猪加载对比图 张鑫旭-鑫空间-鑫生活

当大图轮廓加载OK的时候,小图最后一个乳猪还没有出世面;而基本式乳猪图还没有开始加载!显然,罗伯森是想告诉我们,渐进JPEG下载更快。

下表为其在各个浏览器下测试的结果:

浏览器 (特定测试版本) 渐进jpeg前景渲染 渐进jpeg背景渲染
Chrome (v 25.0.1323.1 dev Mac, 23.0.1271.97 m Win) 渐进地 (相当快!) 渐进地 (相当快!)
Firefox (v 15.0.1 Mac, 12.0 Win) 渐进地 (相当快!) 文件下载后立即地(慢)
Internet Explorer 8 文件下载后立即地(慢) 文件下载后立即地(慢)
Internet Explorer 9 渐进地 (相当快!) 文件下载后立即地(慢)
Safari (v 6.0 Desktop, v 6.0 Mobile) 文件下载后立即地(慢) 文件下载后立即地(慢)
Opera (v 11.60) 文件下载后立即地(慢) 文件下载后立即地(慢)

结论很简单,Chrome + Firefox + IE9浏览器下,渐进式图片加载更快,而且是快很多,至于其他浏览器,与基本式图片的加载一致,至少不会拖后腿。

Scott Gilbertson对渐进式图片有其他的补充:
1. 你用不知道基本式图片内容,除非他完全加载出来;
2. 渐进式图片一开始大小框架就定好,不会像基本式图片一样,由于尺寸未设定而造成回流——提高的渲染性能;
3. 渐进式图片也有不足,就是吃CPU吃内存。

内容就是这些,权衡使用在你手。一般而言,大尺寸图片建议使用渐进式JPEG.

//zxx: png图片也是可以渐进式呈现的

二、渐进式JPEG创建

1. C#转换
据说是如下的代码:

   using (Image source = Image.FromFile(@"D:\temp\test2.jpg")) {

  ImageCodecInfo codec = ImageCodecInfo.GetImageEncoders().First(c => c.MimeType == "image/jpeg");

  EncoderParameters parameters = new EncoderParameters(3);
  parameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
  parameters.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.ScanMethod, (int)EncoderValue.ScanMethodInterlaced);
  parameters.Param[2] = new EncoderParameter(System.Drawing.Imaging.Encoder.RenderMethod, (int)EncoderValue.RenderProgressive);

  source.Save(@"D:\temp\saved.jpg", codec, parameters);
}

至于里面什么意思,我也不知道,我是COPY过来滴,

其他语言的转换自己去搜吧。

2. photoshop生成
大伙都知道photoshop中有个“存储为web所用格式”,然后,其中(见下图),那个连续勾选就是渐进式JPEG图片了:
photoshop生成渐进式JPEG图片 张鑫旭-鑫空间-鑫生活

据说,需要勾选那个转换为sRGB选项,在某些浏览器下,图像设置为CMYK会出现一些问题!
勾选转换为sRGB 张鑫旭-鑫空间-鑫生活

FireWorks等图像软件也是有类似的输出设置的,因为偶没有安装,无法展示,自己摸索吧~

参考文章:

原创文章,转载请注明来自 张鑫旭-鑫空间-鑫生活[ http://www.zhangxinxu.com]
本文地址: http://www.zhangxinxu.com/wordpress/?p=2916

(本篇完)

有话要说,点击 这里发表评论。

相关 [jpeg progressive jpeg] 推荐:

渐进式jpeg(progressive jpeg)图片及其相关

- - 张鑫旭-鑫空间-鑫生活
本文地址: http://www.zhangxinxu.com/wordpress/?p=2916. 一、基本JPEG(baseline jpeg)和渐进JPEG. 网络上那些色色的照片都是 .jpg格式的(“色色”指的是色彩斑斓的意思 ). 不知诸位有没有注意到,这些 jpg格式的图片在呈现的时候,有两种方式,一种是自上而下扫描式的,还有一种就是先是全部的模糊图片,然后逐渐清晰(就像GIF格式的交错显示),例如下面的示意(图片来源: http://codinghorror.typepad.com):.

Photoshop压缩JPEG的秘密 图像品质7比6更差?

- Guan - nPhoto新摄影在线杂志
昨天我们报道了以色列科技公司ictv开发出一种优化jpeg压缩的方法——jpegmini,可将图像文件在不造成肉眼可识别损失的前提下将文件体积缩小50%-80%. 在对该技术的开发者的采访中,他提到“有时你在photoshop中选择了更高的图像品质,但实质上却造成了画质的损失”. 在一篇名为《jpeg压缩质量量化表格》(jpeg compression quality from quantization tables)的文章中,我们看到了这样的说法:.

JPEGmini:把 JPEG 照片壓縮到 1/5,但品質不變

- 三千夜 宴 - T客邦
大家都知道 JPEG 是一種失真壓縮的圖片技術,因為適合壓縮照片檔案,所以大部分的相機都會採用 JPEG 的方式來壓縮照片,讓檔案不會過大. 不過現在相機畫素的提升,一張照片在4MB以上已經不奇怪. JPEGmini 的出現,則能把 JPEG 的照片再壓縮,而不會破壞照片品質. 你分的出來哪張是 JPEGmini 嗎.

使用渐进式JPEG来提升用户体验

- - 标点符
今天才认识到原来JPEG文件有两种保存方式他们分别是Baseline JPEG(标准型)和Progressive JPEG(渐进式). 两种格式有相同尺寸以及图像数据,他们的扩展名也是相同的,唯一的区别是二者显示的方式不同. 这种类型的JPEG文件存储方式是按从上到下的扫描方式,把每一行顺序的保存在JPEG文件中.

你知道JPEG格式可能要被淘汰了吗?

- - 雷锋网
近日,程序员Fabrice Bellard开发出了一种新的图片格式BPG,它能将现有数码图像的尺寸减小到一半,有望取代我们熟知的JPEG格式. 现在,手机或网页上的多数图像都是JPEG格式,它始于1986年,并于1994年正式推出. JPEG能在尽量不影响图像质量的情况下,将其压缩到很小,这能加快文件传输速度,减少网页加载时间,节省存储空间.

如何看待 Progressive Web Apps ?

- - 知乎每日精选
看到 @题叶 问这道题时,我刚从 I/O 回来,当时就特想答,今天总算有时间了. 11月20日在 GDG DevFest 2016 北京分享了「Service Worker 101」,Slides: Service Worker 101「GDG DevFest 2016 北京」 ,技术干货技术干货.

Google 2015 年发布的 Progressive Web App 现在怎么样了?

- - DiyCode - 致力于构建开发工程师高端交流分享社区社区
Progressive Web App 是 Google 在 2015 提出来的下一代一种 Web 应用理念( Next Generation of Applications for the Web ) , 大白话来说就是一个利用现代浏览器的能力来达到类似 App 的用户体验的技术. 从Google官方网站介绍内容提炼一下,PWA 的一些基本能力分别是:.