zoukankan      html  css  js  c++  java
  • PNG图片小结

    PNG:

    便携式网络图形(Portable Network Graphics,PNG)是一种无损压缩位图图形格式,支持索引、灰度RGB三种颜色方案以及Alpha通道等特性。PNG的开发目标是改善并替换GIF作为适合网络传输的格式而不需专利许可,所以被广泛应用于互联网及其他方面上。

    PNG另一个非正式的名称来源为递归缩写:“PNG is Not GIF”。

    特性

    • 支持256色调色板技术以产生小体积文件
    • 最高支持48位真彩色图像以及16位灰度图像
    • 支持Alpha通道的透明/半透明特性。
    • 支持图像亮度的Gamma校准信息。
    • 支持存储附加文本信息,以保留图像名称、作者、版权、创作时间、注释等信息。
    • 使用无损压缩。
    • 渐近显示和流式读写,适合在网络传输中快速显示预览效果后再展示全貌。
    • 使用CRC防止文件出错。
    • 最新的PNG标准允许在一个文件内存储多幅图像。

    由于PNG是无损压缩,那也就意味着他可以重新精确的改造原图片(1.过滤,2.压缩)。

    1.过滤(Filtering)

    差分编码:又叫增量编码,差分编码的简单例子是储存序列式资料之间的差异(而不是储存资料本身):不存“2,3,4,5,6,7,8”,而是存“2,1,1,1,1,1,1”。

    [2,3,4,5,6,7,8] can become [2,1,1,1,1,1,1], where

    [2, 3–2=1, 4–3=1, 5–4=1, 6–5=1, 7–6=1, 8–7=1]

    单独使用用处不大,但是在序列式数值常出现时可以帮助压缩资料。由于改变通常很小(平均占全部大小的2%),差分编码能大幅减少资料的重复。一连串独特的delta档案在空间上要比未编码的相等档案有效率多了。Windows中的差分压缩也是利用这种编码方式

    PNG图片存储用的也是差分编码即是Filtering。

    2.压缩

    主要用到LZ77压缩算法。

    参考:https://medium.com/@duhroach/how-png-works-f1174e3cc7b7

    关于PNG的格式:

    如果不用透明(alpha),RGBA 32bpp选项会浪费图片大小的 ¼,可以用24bpp truecolor format (or just use JPG).当然,如果图片包含灰图模式的数据,你应该只用8bpp.存储。总之,像素存储格式,选择需要用心呀。

    INDEXED format.

    INDEXED color mode, basically chooses the best 256 colors to use, and replaces all your pixels with an index into that color palette. The result, is a reduction from 16 million colors (24bpp) to 256, which is a significant savings.

    对比

     

    参考:https://medium.com/@duhroach/reducing-png-file-size-8473480d0476#.ut4mvxkcv

  • 相关阅读:
    Vue 路由组件
    编写第一个JavaScript程序
    JavaScript 介绍
    JavaScript
    前台数据库
    cookie
    js date string parse
    判断时间大小 yyyy-MM-dd 格式
    正则表达式替换
    测试计时器
  • 原文地址:https://www.cnblogs.com/spring87/p/5427365.html
Copyright © 2011-2022 走看看