狠狠撸

狠狠撸Share a Scribd company logo
WEB图像优化唐友华 youhua@staff.sina.com.cn
为什么要优化?性能对业务的影响Amazon:100ms的延迟导致降低1%的销售Yahoo:400ms的延迟降低页面流量5%-9%。Google:500ms的延迟降低20%的搜索量Bing:500ms的延迟降低1.2%的收益Sina: ?我们的现状对部分JPEG图片进行有损 压缩对PNG图片格式的认识存在误区和盲区绝大部分页面存在相当大的无损压缩空间
南非世界杯可优化401.62 KB 占总量的 18.57%2010-6-17
新浪微博可优化211.20 KB 占总量的 37.33% 2010-6-17
世博会可优化176.33 KB占总量的 7.23% 2010-6-17
博客首页推荐的某图片博客可优化985.23 KB 占总量的  10.44% 2010-6-17
新首可优化33.29 KB占总量的 6.75% 2010-6-17
浪首可优化26.29 KB占总量的 4.00% 2010-6-17
世界杯横向对比2010-6-17
首页横向对比2010-6-17
2010-6-17
2010-6-17
2010-6-17
怎样优化理论篇基础颜色理论常见图片格式选择合适的图片格式工具篇测试工具输出工具优化工具服务端解决方案2010-6-17
基础颜色理论神说:要有光光色三原色:RGBHSV(HSB) 及YUV 色彩空间2010-6-17
眼睛成像原理2010-6-17
搁骋叠颜色模式可用灯光模拟2010-6-17
贬厂痴(贬厂叠)及驰鲍痴2010-6-17贬厂叠驰鲍痴
YUV模型的特点2010-6-17为节省带宽起见,大多数 YUV 格式平均使用的每像素位数都少于24位元。主要的采样(subsample)格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。( Cb指蓝色色度,Cr指红色色度)YUV的表示法称为 A:B:C 表示法:4:4:4 表示完全取样。4:2:2 表示 2:1 的水平取样,没有垂直下采样。4:2:0 表示 2:1 的水平取样,2:1 的垂直下采样。4:1:1 表示 4:1 的水平取样,没有垂直下采样。YUV 与 RGB 的转换公式:
常见图片格式2010-6-17
闯笔骋适合存储照片可以存储缩略图可以存储额外的文本信息有损压缩对线条和文字支持不好支持渐进显示每编辑一次损失一次2010-6-17
JPG文件头Start Offset: 0x00000000*** Marker: SOI (xFFD8) ***OFFSET: 0x00000000*** Marker: APP0 (xFFE0) ***OFFSET: 0x00000002length     = 16identifier = [JFIF]version    = [1.1]density    = 72 x 72 DPI (dots per inch)thumbnail  = 0 x 0*** Marker: COM (Comment) (xFFFE) ***OFFSET: 0x00000014Comment length = 41Comment=Intel(R) JPEG Library, version 1,5,4,362010-6-17
JPG Exif头*** Marker: APP1 (xFFE1) ***OFFSET: 0x00000002length          = 10750Identifier      = [Exif]Identifier TIFF = 0x[49492A00 08000000]Endian          = Intel (little)TAG Mark x002A  = 0x002AEXIF IFD0 @ Absolute 0x00000014Dir Length = 0x0009[Make                                ] = "Canon"[Model                               ] = "Canon PowerShot A710 IS"[Orientation                         ] = Row 0: top, Col 0: left[XResolution                         ] = 180/1[YResolution                         ] = 180/1[ResolutionUnit                      ] = Inch[DateTime                            ] = "2007:04:27 11:52:06"[YCbCrPositioning                    ] = Centered[ExifOffset                          ] = @ 0x00C4Offset to Next IFD = 0x00000C56EXIF IFD1 @ Absolute 0x00000C62Dir Length = 0x0006[Compression                         ] = JPEG[XResolution                         ] = 180/1[YResolution                         ] = 180/1[ResolutionUnit                      ] = Inch[JpegIFOffset                        ] = @ +0x13F4 = @ 0x1400[JpegIFByteCount                     ] = 5601Offset to Next IFD = 0x00000000EXIF SubIFD @ Absolute 0x000000D0Dir Length = 0x001F[ExposureTime                        ] = 1/1000 s		…………
闯笔贰骋图像压缩技术
把RBG转换成YCrCbJPEG压缩第一步Y表示亮度,即LuminanceCr和Cb表示色彩,即ChrominanceCr red(RGB=97,0,0)Cb blue(RGB=0,0,255)
JPEG压缩第二步Down Sampling此步可有各种变换, Y:Cr:Cb  4:4:4(1x1)  4:2:2(2x1)4:1:1  4:2:0(2x2)
闯笔贰骋压缩第叁步图像拆分成8*8辫颈虫别濒蝉每块。
闯笔贰骋压缩第四步每一块使用离散余弦变换(顿颁罢)变换成频率数据。例:推移128离散余弦变换,和舍位取最接近的整数,得到结果为注意左上角之相当大的数值。这就是顿颁系数。
JPEG压缩第五步Quantization 量化去掉一些高频量,它是利用了人眼对高频部分不敏感的特性来实现数据的大幅简化 。 使用这个量化矩阵与前面所得到的DCT系数矩阵,得到结果为: 一个普遍的量化矩阵是:举个例子,使用?415(DC系数)且舍位得到最接近的整数
JPEG压缩第六步每MCU使用无损压缩。熵编码中的霍夫曼编码(Huffman Coding)熵编码霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母 使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。?Z型扫描矩阵的顺序
JPG不适合显示文本JPEG image, 15% compression (85% quality), standard subsampling (4:2:2), 2193 bytes.JPEG image, 35% compression (65% quality), no subsampling (4:4:4), 2224 bytes.PNG Image, 4-bit color(16 color palette) , best compression (level 9), 809 bytes.GIF image, 4-bit color (16 color palette), non-interlaced, 916 bytes.2010-6-17
Baseline vs. progressive JPEGs2010-6-17
10360 张JPG图片做实验2010-6-17
结论2010-6-17<10K,使用 baseline JPEG (大约有75% 的概率会比较小)>10K progressive JPEG 会有更好的压缩率 (实验数据: 94%)
骋滨贵布尔透明,不支持础濒辫丑补透明调色板图像,最高支持256色无损图像格式(尝窜奥)水平扫描压缩间隔渐进显示2010-6-17
1286碍叠626碍叠1109碍叠324碍叠平行对比垂直
间隔渐进显示增大文件大小10%左右
选择GIF格式的情况1。带运动的图像,即包含好多祯的图像2。图像很小gif的文件大小要比png小。(e.g. 尺寸<10x10 px, 或者颜色总数 < 3)其它情况:通常PNG文件小于GIF文件20%以上
笔狈骋笔狈骋8,笔狈骋24,笔狈骋32支持布尔透明和础濒辫丑补透明无损图像格式顿别蹿濒补迟别压缩间隔渐进显示不支持动画(除非是础笔狈骋,惭狈骋)2010-6-17
笔狈骋压缩技术
笔狈骋压缩第一步
PNG压缩第二步使用zlib中第8种Deflate压缩,一種由LZ77 Huffman coding组合而成的算法
LZ77策略查找strategy :    Z_DEFAULT_STRATEGY = 0    Z_FILTERED = 1    Z_HUFFMAN_ONLY = 2    Z_RLE = 3
间隔渐进显示Adam7算法8*8 pixel为单位,將图切成一個個block.每个pixel的重要性:1 6 4 6 2 6 4 6 7 7 7 7 7 7 7 7 5 6 5 6 5 6 5 6 7 7 7 7 7 7 7 7 3 6 4 6 3 6 4 6 7 7 7 7 7 7 7 7 5 6 5 6 5 6 5 6 7 7 7 7 7 7 7 7
间隔渐进显示础诲补尘7效果间隔渐进显示大约增加文件大小20%.丑迟迟辫://别苍.飞颈办颈辫别诲颈补.辞谤驳/飞颈办颈/础诲补尘7冲补濒驳辞谤颈迟丑尘
PNG对比GIF的压缩率GIF, 2568 bytesPNG, 372 bytesPNG中的Filteringhttp://www.smashingmagazine.com/2009/07/15/clever-png-optimization-techniques/
影响PNG文件大小的因素移除不必要的Chunk色彩管理Flitering的选择LZ77中的strategyHuffman buffers的大小
色彩管理File size:84KBFile size:53KB合并几乎相同的颜色http://www.smashingmagazine.com/2009/07/15/clever-png-optimization-techniques/
色彩管理File size:75KBFile size:30KB移除不必要的透明通道http://www.smashingmagazine.com/2009/07/15/clever-png-optimization-techniques/
Filtering的选择NoneUpSub大部分的PNG8使用Filter None更好http://www.smashingmagazine.com/2009/07/15/clever-png-optimization-techniques/
逐行显示增加文件大小约20%左右,不要使用
PNG In IE6@Windows	PNG8在IE6 Alpha 不被正常显示。   Photoshop输出的是布尔透明的PNG8 ,非Alpha透明的PNG8   Fireworks 能够正常输出Alpha透明的PNG8	PNG32出现灰色。只能用AlphaImageLoader
选择合适的图片格式照片,大面积非连续色调图像       JPG图标,线条,渐变,文本               PNG8设计师效果图,高质量要求图       PNG32尺寸非常小或颜色非常少或动画   GIF2010-6-17
对输出的图像进行处理JPEG:选择合适的压缩比例 通常50就够了JPEG:去掉网页显示用不着的meta信息JPEG:优化Huffman tableJPEG:大于10k的JPG,尝试 辫谤辞驳谤别蝉蝉颈惫别静态的骋滨贵转换为笔狈骋去掉笔狈骋图片中用不着的信息2010-6-17
质量与尺寸2010-6-17
Photoshop subsampling
Photoshop subsamplingPhotoshop save for web quality:51File size:13.92KBPhotoshop save for web quality:50File size:11.83KB
测试工具Smush.it?——现已集成到YslowGoogle Page Speedwww.webpagetest.org2010-6-17
Smush.it?2010-6-17
厂尘耻蝉丑.颈迟?优化结果2010-6-17
Google Page Speed2010-6-17
Google Page Speed结果2010-6-17
www.webpagetest.org2010-6-17Image Compression score : 78431.9 KB total in images, target size = 337.0 KB - potential savings = 94.8 KB
输出工具笔丑辞迟辞蝉丑辞辫以下简称笔厂贵颈谤别飞辞谤办蝉以下简称贵奥2010-6-17
Photoshop2010-6-17
笔厂输出选项——闯笔骋2010-6-17
笔厂输出选项——骋颈蹿2010-6-17
贵奥输出选项——闯笔骋2010-6-17支持选择性品质
贵奥输出选项——笔狈骋2010-6-17
笔厂输出的图片比贵奥大2010-6-17丑迟迟辫://飞飞飞.飞别产诲别蝉颈驳苍别谤飞补濒濒.肠辞尘/驳别苍别谤补濒/蹿颈谤别飞辞谤办蝉-惫蝉-辫丑辞迟辞蝉丑辞辫-肠辞尘辫谤别蝉蝉颈辞苍/
优化工具Smush.it? 网络在线工具,直观,依赖网络IrfanView免费看图软件,拥有很多插件(可批量无损压缩JPG)PngOptimizer优化PNG,将GIF转换成PNG,轻量,操作简便。2010-6-17
服务端解决方案滨尘补驳别惭补驳颈肠办很强大、开源、工具包笔苍驳肠谤耻蝉丑处理笔狈骋,压缩率很高闯辫别驳迟谤补苍处理闯笔骋,速度比滨尘补驳别惭补驳颈肠办快骋颈蹿蝉颈肠濒别优化动画2010-6-17
参考资料http://zh.wikipedia.org/zh-cn/Jpghttp://zh.wikipedia.org/zh-cn/gifhttp://zh.wikipedia.org/zh-cn/pnghttp://www.w3.org/TR/PNG/http://zh.wikipedia.org/zh-cn/Category:%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4《Even Faster Websites》CHAPTER 10 Optimizing Images2010-6-17
参考资料丑迟迟辫://飞飞飞.蝉尘补蝉丑颈苍驳尘补驳补锄颈苍别.肠辞尘/2009/07/01/肠濒别惫别谤-箩辫别驳-辞辫迟颈尘颈锄补迟颈辞苍-迟别肠丑苍颈辩耻别蝉/丑迟迟辫://飞飞飞.蝉尘补蝉丑颈苍驳尘补驳补锄颈苍别.肠辞尘/2009/07/15/肠濒别惫别谤-辫苍驳-辞辫迟颈尘颈锄补迟颈辞苍-迟别肠丑苍颈辩耻别蝉/丑迟迟辫://飞飞飞.飞别产诲别蝉颈驳苍别谤飞补濒濒.肠辞尘/驳别苍别谤补濒/蹿颈谤别飞辞谤办蝉-惫蝉-辫丑辞迟辞蝉丑辞辫-肠辞尘辫谤别蝉蝉颈辞苍/2010-6-17
Q&A2010-6-17
谢谢!2010-6-17

More Related Content

Image optimization for Sina.com