今天凌晨1点,突然有人QQ加了我,原来是那个初恋十年前删了...图片来自Pexels因为之前QQ空间互动太多,QQ推荐好友经常推荐我们认识...尴尬...同意好友申请后仔细阅读她一年中的十个全QQ动态和照片。她变漂亮了,懂得打扮了。以前瘦弱的身材,现在的打扮和妆容,已经是超乎我认知的女神了。可我还是无所事事,身体逐渐臃肿,发际线不断上扬,每天努力工作,为生活奔波,依然穷困潦倒。用一句话来形容现在的心情就是:“你已经登上了更高的高峰,我只能看着你远去的背影。”她默默的点了根烟,把自己的美颜照片全都存了起来。嗯?我发现每张照片都是.png图片格式。PNG?PNG图片每天都在用,但是PNG到底是什么东西,它的压缩原理是什么?很好,接下来给大家讲解一下。什么是巴新?PNG的全称是PortableNetworkGraphics(便携式网络图形),是一种流行的用于网络传输和显示的图像格式。原因如下:无损压缩:PNG图像基于LZ77派生算法进行压缩,使其具有更高的压缩率,生成的文件体积更小且不丢失数据。体积小:使用特殊的编码方式标记重复的数据,使相同格式的图片PNG图片文件的体积更小。由于网络通讯带宽受限,在保证图片清晰逼真的前提下,首选PNG格式图片。支持透明效果:PNG支持为原图定义256级透明度,使图像的边缘可以平滑地与任何背景融合,这是GIF和JPEG所不具备的。PNG类型PNG图像主要有以下三种:PNG8:PNG8中的8实际上是指8bits,相当于用2^8(2的8次方)大小来存储图片的颜色类型。2^8等于256,也就是说PNG8可以存储256种颜色。如果一张图片颜色比较少,设置成PNG8的图片类型是很合适的。PNG24:PNG24中的24相当于3乘8等于24,也就是用三个8bits来表示R(红色)、G(绿色)和B(蓝色)。R(0~255),G(0~255),B(0~255),可以用256次256次256=16777216种颜色来表达图片,这样PNG24比PNG8的图片可以表示更丰富多彩的图片,但是占用空间相对较大。PNG32:PNG32中的32相当于PNG24加上8bits透明色通道,相当于R(红)、G(绿)、B(蓝)、A(透明)。R(0~255)、G(0~255)、B(0~255)、A(0~255)。比PNG24多一个A(透明度),也就是说PNG32可以表示和PNG24一样多的颜色,而且还支持256种透明色,可以表示更丰富的图像颜色类型。怎么说呢,总的来说,PNG8/PNG24/PNG32相当于在我们屌丝心中把女神分为以下三类:第一类女神=PNG8:当屌丝狗看到第一类女神们,她们顿时心生欢喜,满脸笑容,焦黑的印堂渐渐舒展开来,眼神也能得到确认,那是一种心跳加速的感觉。第二种女神=PNG24:第二种女神开始强大了,会给屌们一种菊花般的紧绷和震耳欲聋的震撼。多接触第二种女神,可以让鸡巴每天都元气满满,延年益寿。三种女神=PNG32:在第三种女神面前,所有语言都是苍白的。是一种让屌丝看破的至高无上的存在,双手双目向天一开。超凡脱俗和分身都不足以形容她一半的美。我只在梦里见过。哎,我的初恋,看她现在的照片,应该是PNG级别的24.PNG图片数据结构PNG图片的数据结构其实和HTTP请求的结构非常相似。它是一个数据头后面跟着很多数据块,如下图所示:如果你用VIM的视图编码方式打开一个PNG图片,它会是这样的:当你第一眼看到这个十六进制代码时,是不是感觉像女神一样晦涩难懂?大哥你别慌,说实话,要是撩文里还有这么乱码,那就简单了,我和我哥已经妻妾成群了。下面我就这些十六进制代码的含义一一解释:89504e470d0a1a0a:这是PNG图片的头部。所有的PNG图片头都是这串代码。图片软件根据这串代码判断这个文件不是PNG格式的图片。0000000d:iHDR数据块的长度,为13。49484452:Itisthetypeofthedatablock,whichisIHDR,followedbydata.000002bc:isthewidthofthepicture.000003a5:isthealtitude.Byanalogy,eachsegmentofhexadecimalcoderepresentsaspecificmeaning.Iwon’tanalyzetheothersonebyonebelow,therearetoomany,friends,checkitoutbyyourself.WhatkindofPNGimageismoresuitableforcompressingconventionalPNGimages,themoremonotonousthecolor,thelessthecolorvalue,thegreaterthecompressionrate,suchasthefollowingpicture:itisonlycomposedofredandgreen,if0isusedtorepresentred,1isused代表绿色,那用数字表示这张图就是下面这个样子:000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111我们可以看到,这张图片是用了大量重复的数字,我们可以将重复的数字去掉,直接用数组形式的[0,1]Thispicturecanbedirectlyexpressed,andalargepicturecanbeexpressedwithonlytwonumbers,whichgreatlycompressesaPNGpicture.So!Themoresimplethecolor,thelessthecolorvalue,thesmallerthecolordifference,thehigherthecompressionrateandthesmallerthesizeofthePNGimage.PNGcompressionThecompressionofPNGimagesisdividedintotwostages:Prediction:ThisstageistopreprocessthePNGimagestomakeitmoreconvenientforsubsequentcompression.Toputitbluntly,sheisagoddess.Beforemakeup,shewillfirstapplyprimer,andthenapplylotionandessencetofacilitatesubsequentmakeup,whitening,eyeshadow,lighting,etc.Compression:PerformDeflatecompression,whichcombinestheLZ77algorithmandtheHuffmanalgorithmtoencodepictures.PredictionPNGimagesusedifferentialencoding(Deltaencoding)topreprocesstheimages,andprocessthevalueofeachchannelineachpixel.Therearemainlyseveraltypesofdifferentialencoding:DonotfilterX-AX-BX-(A+B)/2(alsoknownastheaveragevalue)Paethinfers(thisismorecomplicated)AssumethataPNGimageisasfollows:ThisimageisaredgraduallyenhancedThegradientcolormapof,itsredisgraduallystrengthenedfromlefttoright,andthevaluemappedintoanarrayis[1,2,3,4,5,6,7,8].如果使用X-A的差分编码,则为:[2-1=1,3-2=1,4-3=1,5-4=1,6-5=1,7-6=1,8-7=1]结果为:[1,1,1,1,1,1,1]最后的[1,1,1,1,1,1,1]结果出现大量重复数,所以非常适合压缩。这就是为什么具有渐变颜色的图像、颜色值变化不大的图像和具有单一颜色的图像更容易压缩的原因。差分编码的目的是将PNG图像数据值尽可能地转化为一组重复的、低的值,这样更容易压缩。最后需要注意的是,差分编码处理的是每个像素中每个颜色通道的值,R(红)、G(绿)、B(蓝)、和四个颜色通道的值A(透明)。分别处理。压缩(Compression)压缩阶段会对预处理阶段得到的结果进行Deflate压缩,包括霍夫曼编码和LZ77压缩。如前所述,Deflate压缩会标记图像所有重复的数据,并记录数据特征和结构,得到一个压缩比最大的PNG图像编码数据。Deflate是一种压缩数据流的算法,可用于任何需要流压缩的地方。另外,我们之前说过,一张PNG图片是由很多数据块组成的,但是数据块中的一些信息其实是没有用的。比如你用Photoshop保存一张PNG图片,图片中会有块记录“ThisimagewascreatedbyPhotshop”。这些信息中有许多是无用的。如果你用Photoshop的“ExportWebFormat”去掉这些无用的信息。导出为web格式前后的对比效果如下图所示:可以看到,导出为web格式后去掉了很多无用的信息后,图片明显小了很多。结论以上是我对PNG的理解。写得不好,像一个支离破碎的中老年人,杂乱无章。记得当年和初恋分手的原因是怕影响学业……可是分手之后,成绩还是很差。不仅错过了女神,而且到现在还是一事无成。如今人到中年,背负着巨额房贷,家里还有孩子待养。看着在身边呼呼大睡的老婆,他忽然想到了。正如鲁迅所说:“爱情就像在沙滩上捡贝壳,不要捡最大的,也不要捡最美的。要捡就捡自己喜欢的。”最重要的是,喜欢的一旦捡到,就再也不会捡到。”我去了海边。”凌晨四点写完文章,不知不觉睡着了,梦回十年前的那个夏天,我们都甜甜地笑着,看着你哭泣的脸,我们微笑着和我说再见,再见!
