您好,欢迎访问三七文档
WEB图像优化唐友华youhua@staff.sina.com.cn为什么要优化?性能对业务的影响Amazon:100ms的延迟导致降低1%的销售Yahoo:400ms的延迟降低页面流量5%-9%。Google:500ms的延迟降低20%的搜索量Bing:500ms的延迟降低1.2%的收益Sina:?我们的现状对部分JPEG图片进行有损压缩对PNG图片格式的认识存在误区和盲区绝大部分页面存在相当大的无损压缩空间南非世界杯可优化401.62KB占总量的18.57%2010-6-17新浪微博可优化211.20KB占总量的37.33%2010-6-17世博会可优化176.33KB占总量的7.23%2010-6-17博客首页推荐的某图片博客可优化985.23KB占总量的10.44%2010-6-17新首可优化33.29KB占总量的6.75%2010-6-17浪首可优化26.29KB占总量的4.00%2010-6-17世界杯横向对比公司名节省字节数所占比例新浪401.62KB18.57%雅虎中国303.98KB33.94%腾讯262.23KB19.32%搜狐30.88KB3.66%网易20.13KB2.84%2010-6-17首页横向对比公司名节省字节数所占比例网易53.79KB7.92%新浪26.29KB4.00%腾讯17.92KB7.25%搜狐12.39KB6.56%2010-6-172010-6-172010-6-172010-6-17怎样优化理论篇基础颜色理论常见图片格式选择合适的图片格式工具篇测试工具输出工具优化工具服务端解决方案2010-6-17基础颜色理论神说:要有光光色三原色:RGBHSV(HSB)及YUV色彩空间2010-6-17眼睛成像原理2010-6-17RGB颜色模式可用灯光模拟2010-6-17HSV(HSB)及YUV2010-6-17HSBYUVYUV模型的特点2010-6-17为节省带宽起见,大多数YUV格式平均使用的每像素位数都少于24位元。主要的采样(subsample)格式有YCbCr4:2:0、YCbCr4:2:2、YCbCr4:1:1和YCbCr4: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的转换公式:常见图片格式图像格式色彩透明压缩算法诞生时间JPG24不透明有损压缩1992年发布1994年获得ISO认定GIF8布尔透明无损压缩1987年发布1989年完善PNG8&24alpha通道半透明无损压缩1996年发布1.01998年发布1.11999年发布1.22003年成为W3C建议2010-6-17JPG适合存储照片可以存储缩略图可以存储额外的文本信息有损压缩对线条和文字支持不好支持渐进显示每编辑一次损失一次2010-6-17JPG文件头StartOffset:0x00000000***Marker:SOI(xFFD8)***OFFSET:0x00000000***Marker:APP0(xFFE0)***OFFSET:0x00000002length=16identifier=[JFIF]version=[1.1]density=72x72DPI(dotsperinch)thumbnail=0x0***Marker:COM(Comment)(xFFFE)***OFFSET:0x00000014Commentlength=41Comment=Intel(R)JPEGLibrary,version1,5,4,362010-6-17JPGExif头***Marker:APP1(xFFE1)***OFFSET:0x00000002length=10750Identifier=[Exif]IdentifierTIFF=0x[49492A0008000000]Endian=Intel(little)TAGMarkx002A=0x002AEXIFIFD0@Absolute0x00000014DirLength=0x0009[Make]=Canon[Model]=CanonPowerShotA710IS[Orientation]=Row0:top,Col0:left[XResolution]=180/1[YResolution]=180/1[ResolutionUnit]=Inch[DateTime]=2007:04:2711:52:06[YCbCrPositioning]=Centered[ExifOffset]=@0x00C4OffsettoNextIFD=0x00000C56EXIFIFD1@Absolute0x00000C62DirLength=0x0006[Compression]=JPEG[XResolution]=180/1[YResolution]=180/1[ResolutionUnit]=Inch[JpegIFOffset]=@+0x13F4=@0x1400[JpegIFByteCount]=5601OffsettoNextIFD=0x00000000EXIFSubIFD@Absolute0x000000D0DirLength=0x001F[ExposureTime]=1/1000s…………JPEG图像压缩技术把RBG转换成YCrCbJPEG压缩第一步Y表示亮度,即LuminanceCr和Cb表示色彩,即ChrominanceCrred(RGB=97,0,0)Cbblue(RGB=0,0,255)JPEG压缩第二步DownSampling此步可有各种变换,Y:Cr:Cb4:4:4(1x1)4:2:2(2x1)4:1:14:2:0(2x2)JPEG压缩第三步图像拆分成8*8pixels每块。JPEG压缩第四步每一块使用离散余弦变换(DCT)变换成频率数据。例:推移128离散余弦变换,和舍位取最接近的整数,得到结果为注意左上角之相当大的数值。这就是DC系数。JPEG压缩第五步Quantization量化去掉一些高频量,它是利用了人眼对高频部分不敏感的特性来实现数据的大幅简化。使用这个量化矩阵与前面所得到的DCT系数矩阵,得到结果为:举个例子,使用−415(DC系数)且舍位得到最接近的整数一个普遍的量化矩阵是:JPEG压缩第六步Z型扫描矩阵的顺序每MCU使用无损压缩。熵编码中的霍夫曼编码(HuffmanCoding)熵编码霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。JPG不适合显示文本JPEGimage,15%compression(85%quality),standardsubsampling(4:2:2),2193bytes.JPEGimage,35%compression(65%quality),nosubsampling(4:4:4),2224bytes.PNGImage,4-bitcolor(16colorpalette),bestcompression(level9),809bytes.GIFimage,4-bitcolor(16colorpalette),non-interlaced,916bytes.2010-6-17Baselinevs.progressiveJPEGs2010-6-1710360张JPG图片做实验2010-6-17结论2010-6-1710K,使用baselineJPEG(大约有75%的概率会比较小)10KprogressiveJPEG会有更好的压缩率(实验数据:94%)GIF布尔透明,不支持Alpha透明调色板图像,最高支持256色无损图像格式(LZW)水平扫描压缩间隔渐进显示2010-6-17626KB1286KB324KB1109KB平行对比垂直间隔渐进显示增大文件大小10%左右选择GIF格式的情况1。带运动的图像,即包含好多祯的图像2。图像很小gif的文件大小要比png小。(e.g.尺寸10x10px,或者颜色总数3)其它情况:通常PNG文件小于GIF文件20%以上PNGPNG8,PNG24,PNG32支持布尔透明和Alpha透明无损图像格式Deflate压缩间隔渐进显示不支持动画(除非是APNG,MNG)2010-6-17PNG压缩技术PNG压缩第一步Filtering:0None不处理1Sub当前pixel与前一个pexel的差值2Up当前pixel与上方pexel的差值3Average左方pixel与上方pixel的平均值4Paeth当前的pixel分別与左方,上方,左上方的pixel將以比较,找出最相近的pixel,计算pixel之間的差值.5Adaptive将以上五种算法都算一遍,找出相差值最少的方法.PNG压缩第二步使用zlib中第8种Deflate压缩,一種由LZ77Huffmancoding组合而成的算法LZ77策略查找strategy:Z_DEFAULT_STRATEGY=0Z_FILTERED=1Z_HUFFMAN_ONLY=2Z_RLE=3间隔渐进显示Adam7算法8*8pixel为单位,將图切成一個個block.每个pixel的重要性:1646264677777777565656567777777736463646777777775656565677777777间隔渐进显示Adam7效果间隔渐进显示大约增加文件大小20%.PNG对比GIF的压缩率GIF,2568bytesPNG,372bytes中的Filtering影响PNG文件大小的因素移除不必要的Chunk色彩管理Flitering的选择LZ77中的strategyHuffmanbuffers的大小色彩管理Filesize:84KBFilesize:53KB合并几乎相同的颜色Filesize:75KBFilesize:30KB移除不必要的透明通道色彩管理NoneUpSub的选择大部分的PNG8使用FilterNone更好逐行显示增加文件大小约20%左右,不要使用PNGInIE6@WindowsPNG8在IE6Alpha不被正常显示。Photoshop输出的是布尔透明的PNG8,非Alpha透明的PNG8Fireworks能够正常输出Alpha透明的PNG8PNG32出现灰色。只能用AlphaImageLoader选择合适的图片格式照片,大面积非连续色调图像JPG图标,线条,渐变,文本PNG8设计师效果图,高质量要求图PNG32尺寸非常小或颜色非常少或动画GIF2010-6-17对输出的图像进行处理JPEG:选择合适的压缩比例通常50就够了JPEG:去掉网页显示用不着的meta信息JPEG
本文标题:web图像优化
链接地址:https://www.777doc.com/doc-3391193 .html