PNG图片优化技术

发布时间:   来源:文档文库   
字号:
PNG图片优化技术(一)2010-07-2711:49引言
PNG图片优化技术,做为一名网页设计师你或许已经对png格式非常熟悉,png提供了完整的透明度,这是一种无损的,功能强大的图像格式。能够很好代替gif图像格式。但是绝大多数人认为png不可被压缩,带着这样的疑问我们来认真看完下面这篇文章。每一种图像格式都有自己的优缺点,如果掌握了相关知识,在进行图像优化时能够针对图像进行相应处理,得到高品质的图像和高压缩率,这是图像优化的关键所在。png被称为开源的gif图像格式,它们之间有很多相同的地方(如:索引色),但png在每一个方面都要强于gif。它介绍了一些非常酷的功能,例如:图像封装和压缩,但对我们网页设计师来说最重要的还是线性过滤(也称为“三角过滤”)。什么是线性过滤?
这里介绍下它的原理,假如我们有一张5*5像素水平渐变的图片,如下图(每个数字代表了一种颜色)


通过上图你会发现相同的颜色都是在垂直方向上扩展,而不是水平方向。这样的图片如果用gif格式将很难获得高压缩率,它只压缩水平方向扩展的颜色(图像尺寸越大,越能说明问题)。让我们看看线性过滤是怎样将这类图像压缩的:



以数字2为标识的每一行都经过了“Up过滤”,“Up过滤”向png解码器发送信息:“对于当前的像素,提取上方像素的值,并将其添加到当前值”。图中第2-5行垂直方向都拥有相同的值。所以它们的值都是0,如果这样的图片越大那么压缩比率也越大。
在理想情况下,“Sub过滤”能提供更好的结果:


以数字1为标识的每一行都经过了“Sub过滤”,它发送信息给解码器:“当前像素提取左侧像素的值,添加到当前值”。例子中的值全为1,我想你大概也猜到这样的数据肯定能被有效的压缩。
线性过滤是非常重要的概念,尤其是在图片处理时可以针对过滤特点进行处理以便得到更好的过滤效果。png5种过滤器:None(无过滤),Sub(当前值减去左侧像素的值),Up(减去上方像素的值),Average(减去左侧和上方像素的平均值)Paeth替换上方,左边或者上方的左边像素值,并重新以AlanPaeth命名)。

通过比较下面的图片,我想大家应该都能明白“线性过滤”的魅力所在。


gif2568字节


png372字节图片类型
png是一种存储元数据信息的图片类型。如果你是Photoshop用户,你应该已经png8(索引图像)和png24(真彩色图像)非常熟悉,如果你是Fireworks用户,或许已经知道png32(真彩色透明图像)。但是Photoshoppng24格式也能存储真彩色透明图像,其实这些命名都不是官方的,所以在png图像格式说明面并不能找到这些概念,为了方便起见,在这次讨论中我们采用Photoshop的命名方式。
png可提供5种图片类型:灰度,真彩色,索引色,带alpha通道的灰度,带alpha通道的真彩色。遗憾的是Photoshop只能导出3种图像类型:带透明的索引颜色,真彩色,带透明度的真彩色。这就是为什么大家一直认为Fireworkspng图像最好处理工具。其实不然,Fireworks并没有足够的工具来处理导出的png图像,它仅仅是在导出时做一些微小的优化工作。
那还有没有更好的png压缩工具呢?答案是肯定的。OptiPNGpngcrush都是非常有效的工具,从本质上来看,这些工具主要做以下优化:
1.1.选择最合适的图像类型(例如:如果图像中没有太多的颜色,真彩色图像会被转化为索引色图像)2.2.选择最合适的过滤方式

3.3.选择最合适的压缩策略以及选择性的减少颜色深度
所有这些操作都不会影响到图像质量,却能减小png图像文件的大小,所以我强烈建议您每次保存png图像时都使用这些工具。
下面来介绍几种处理图像的方法,使图片更好的执行“线性过滤”。1.色调分离
色调分离的优化方法已经广为人知。Photoshop中打开样例图片,点击图层面板中的”创建新的填充或调整图层图标”,并选择色调分离:

选择尽可能小的数值(通常40就够了)并保存图片:



原图:84K


压缩后:53K
优化原理:有效的减少颜色数量,合并相似的颜色,创建出分离区域,更好的执行“线性过滤”,得到高压缩率。
这种方法有一定的局限性,尤其是优化的图片与html背景融合的情况下须慎用(蓝色为html背景)。





2.多余的透明看看下面的图片:


75K

30K
两张图片都是用Photoshop导出的,而且没有经过任何优化。即使对比图中的每个像素,你都不会发现它们之间存在任何区别。但是为什么前者居然是后者的2.5倍大?
在探寻奥秘之前,你必须安装一个“RemoveTransparency”的Photoshop插件才可以看到隐藏的细节。
Photoshop中打开上面的两张图片,选择Filer->PhotoWiz->RemoveTrasparency。现在,你就可以看到保存在图像中的真实像素信息了:





这是怎么回事?其实很简单。alpha通道的真彩色图像每个像素都用了4个字节来表示:RGBA。最后一个是alpha通道,控制该像素透明度:值为0则完全透明,255则完全不透明。这意味着每一个像素(任何RGB值)只要alpha值设0就可以完全隐藏。但是这些RGB数据仍然存在,而且它不利于png编码器对数据流进行有效的封装和编码。因此,我们必须在导出图像前删除这些隐藏数据(例如上图中填充的黑色)。下面是一个比较便捷的方法:
1.1.Photoshop中打开上面例子中第一张图片;2.2.Ctrl+单击Mac系统中为+单击)图层面板中的缩略图,建立选区->
单击选择栏目->选中反向。
3.3.切换到快速蒙版模式,按Q键:

4.4.我们已经建立了一个半透明图像的蒙版,但我们只需要完全透明的图像。图像->调整->阈值,并将阈值色阶滑到最右端,从而使选区完全透明:

5.5.退出快速蒙版模式(按Q键),并用黑色填充选区:

6.6.再次反选(选择->反向),点击图层面板的“添加蒙版”图标,添加蒙版。对于上述这些操作我们只须了解即可,因为png二次压缩工具内已经内置了该项操作。3.透明分离
有时候因为图片中存在一些半透明像素,你不得不保存一个“重量级”的PNG-24文件。如果将此类图像一分为二,一部分是不透明像素,另一部分则为透明,然后各以适当格式保存。比如你可以用PNG-24格式保存半透明像素,不透明像素则用PNG-8甚至JPEG格式保存。这样操作下来在实际应用中你将会节省很大的图片流量。看一下实际案例:



PNG2462K
1.1.在图层面板中Ctrl+单击(或+单击)图像缩略图建立选区;


2.2.在通道面板中选择“将选区存储为通道”;


3.3.取消(Ctrl+D+D)选区,选择新建的通道,然后打开阈值(图像->调整->阈值)。将滑块尽量向右拖动;

4.4.我们已经为不透明的像素创建了蒙版。现在利用这个蒙版来分离原始图层。Ctrl+单击(或+单击)alpha1通道,转到图层面板,选择原始图层层,打开图层->新建->通过剪切的图层。这样我们就分离出了不透明和半透明像素。现在你需要将这两个文件分别存储为不同的文件格式:不透明像素保存为PNG-8,半透明像素保存为PNG-24。针对半透明像素

图层你还可以使用色调分离技术让文件变得更小。
PNG-817KB


PNG-24色调分离(色阶=356KB最终对比结果:



原图:63K


优化后:23KB
优化后的图片大小几乎只有原图的1/3,在原来的基础上能够节省2/3的流量。但是这种方法有一个明显的缺点:将一个图片分成两个图片,增加了重构人员的工作量,减少图片大小的同时却又增加了http连接数。
这里只是介绍些优化方法,在实际应用中请大家多去尝试,发现不同方法的应用规律,总结出来大家一起分享!在原文中SergeyChikuyonok提到还会有第二部分的内容,将进一步探讨更高层次的技术,会谈到灰度模式的图像,使用更少的颜色,降低细节,并讨论进一步优化png的小技巧,以及png优化的实例。让我们一起期待下一篇大作。

原文地址:
www.smashingmagazine.com/2009/07/15/clever-png-optimization-techniques
作者:SergeyChikuyonok翻译:www.yslow.net/show.php

PNG图片优化技术(二)2010-07-2711:51
PNG图片优化技术,作为网页设计师,你可能已经非常熟悉PNG格式了,它能够提供功能全面的透明效果。PNG格式无损、强大,是老GIF格式的绝佳替代者。作为Photoshop(或任何其他图像编辑器)的用户,你可能会认为PNG优化选项没有多少,尤其是对真彩色PNG(在Photoshop中为PNG-24)的选项根本就没有。你们有些人可能甚至认为,这种格式不能再优化了。那么,在本文中我们将终结这个谣传。
本文将从技术角度帮助你优化PNG图像。这些技术都来自大量对PNG编码器保存数据的方式的研究。我们会谈到灰度,怎样减少颜色的数量,及减少细节来压缩文件。
您可能想看看下面的相关文章:

CleverJPEGOptimizationTechniques
JPEG优化技术(有人已经翻译了这篇文章,见此CleverPNGOptimizationTechniquesPNG优化技术(一)本文翻译
灰度
Photoshop不能保存灰度模式的PNG文件,所以你得在保存黑白图像后再使用OptiPNG,代码如下:optipng-o5bw-image.png
灰度图像占用的空间远小于RGB图像,因为每个像素只用一个字节来表示,而不是三个:



PNG-24(Photoshop→真彩色),8167字节


PNG-24(Photoshop+OptiPNG→灰度),6132字节
在保存图像为PNG文件之前,将其设置为灰度模式(图像→模式→灰度)非常重要,尤其是半透明图像(参见Dirtytransparency的方法)
减少颜色
这个方法可以作为色调分离的替代方案。色调分离会严重改变图像的色彩,如果你要将图像嵌在网站背景中的话,这根本不可接受。这种方法能让你控制颜色更加自如,但也是限制在256色以内。
这个方法主要是从半透明图像中提取图像信息(即删除透明度)将其转换为索引颜色再应用到原始蒙版中。减少颜色数量利于文件的有效压缩。1.Photoshop中打开并且复制原始图像(图像→复制)。



63KB
2.从复制的图像中删除透明(滤镜→PhotoWiz→RemoveTransparency)


3.设置图像模式为索引颜色(图像→模式→索引颜色)在新对话窗口中输入如下设置:

颜色:190仿色:扩散,数量:80%。



4.图像模式设置回RGB颜色,并复制图层到原始文件中。将复制的图层对齐,并创建剪贴蒙版。现在保存为PNG-24文件:


51KB
如你所见,做些简单的步骤就可以节省下11KB,而且还没有任何质量损失。甚至这种方法还有一个好处:使用OptiPNG时能够获得更高的压缩率。而对于这张图像,它的大小被从51KB减小到33KB,压缩了36%。你可以保存为Web式的文件并应用Influencemask来减低大小,而不必把图像转为索引颜色模式。
但是这种方法并不等同于在Fireworks中的调整PNG-8的透明度。在多数情况

下,即使颜色数减少了,但仍会超过256色,所以你必须保存图片为PNG-24而非PNG-8。要记住,不透明的红色和透明50%的红色是完全不同的两种颜色。
降低细节
这项技术对于优化阴影、倒影、发光等非常好用。记得在Dirtytransparency讲到,真彩色图像中的每个像素都用了四个字节来描述:RGBA最后一个控制像素的透明度。对于Alpha值太低的像素(即像素只是勉强可见),你就可以替RGB数据以取得更好的压缩效果。让我们试试吧。1.再次在Photoshop中打开复古iPod
63KB
2.iPod下方的倒影就是非常好的优化对象。Ctrl+单击+点击图层面板中的缩略图创建选区。到通道面板从选区创建新的通道:


3.我们必须选中那些勉强可见的像素。反相该通道(图像→调整→反相),然后打开阈值对话框(图像→调整→阈值)。设置阈值为170就足够了:


4.这样我们就得到了只包括勉强可见的像素的蒙版。Ctrl+单击+单击道创建选区。返回图层面板,选择图像图层,打开滤镜→杂色→中间值。这个滤镜将平滑选区中的像素,也就是说更利于压缩。设置半径为5


现在存储图像为Web所用格式,PNG-24文件大小已经从63KB减小为59KB了。你可以调整阈值和中间值,在提高压缩率与保存更多细节间平衡。
其它PNG的使用和优化技巧
1.每次优化都必须先彻底分析图像。再选用最合适的优化技术。2.自主创新。以这些技术为基础,研究你自己的优化方法。

3.许多人认为,对于颜色较少的图像,PNG-8总比PNG-24更适用。但是他们错了。有时候,PNG-24反而更小:



PNG-8833字节


PNG-24369字节
在这张图像中,PNG-8额外占用了空间:3个字节是用来描述颜色板中的像素,另外再用1个字节来描述图像数据流中的像素,PNG-24总共只需要3个字节来描述。因此,如果图像颜色数较低,也没有透明,那么就该测试下PNG-8PNG-24哪个更小。
4.如果您使用的是旧版本的Photoshop(低于CS3),你可能会发现,图像在图像编辑器与在网页浏览器中看起来不一样。这是因为PNG文件中存有伽玛值,可以控制图像的伽玛校正。(关于伽玛的相关内容,可以参考这篇文章——译注)你可以放心地将其删除,用TweakPNG(仅Windows下)或smush.it都能做到。
5.有一种“特殊的”PNG图像格式,可以在支持半透明的情况下,以索引颜色PNG-8保存。Photoshop不能保存这种图像(Fireworks则可以),但可以先在Photoshop中编辑,然后再用OptiPNG转换。
OptiPNG默认会将少于256色的真彩色图像(24位)转换成8位色。这么做的话,可以先应用“减少颜色”和“降低细节”技术,再“猜测”图像的颜色数。不过这样非常费时。PNGGNQ工具可以将真彩色图像转为256色,但这样你就不能完全掌控图像了。
你必须减少颜色数到256色以下,包括半透明像素在内。这种格式之所以“特别”,因为它在IE6下会:



IE6


其他浏览器
你也看到了,IE6只显示不透明像素。这种格式的好处是你可以使用标准的标签,或把图片作为背景(即不使用巨耗资源的AlphaImageLoaderCSS滤镜),但代价是IE6的视觉效果非常糟糕。
6.不要使用“另存为”保存应用在网页上的PNG图像,而应该使用“存储为Web所用格式”。默认情况下,Photoshop会将预览连同图像一起保存,这样文件就会稍大一些。
原文:PNGOptimizationGuide:MoreCleverTechniques作者:SergeyChikuyonok翻译:www.yslow.net/show.php


本文来源:https://www.2haoxitong.net/k/doc/36385e0e581b6bd97f19eadf.html

《PNG图片优化技术.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式