zoukankan      html  css  js  c++  java
  • WebP,Jpeg,Png格式图片的编解码区别

    为什么图片要压缩?

    一张图片如果不压缩的话,所占内存将是他的原始大小,十分占资源。为了解决这种需求,以时间换空间,需要将图片压缩保存,使用的时候解压。不同图片后缀代表了不同的编解码算法。

    Jpeg

     

    1.  将图像切分为多个块,每个小块为8*8的大小。边长如果大于8,DCT计算量会急剧变大。如果变成小于8,分组变多,压缩效果变差。
    2. 对每个块做离散余弦变换(DCT),把时域图转化为频域图。左上角为低频信息,右下角为低频信息。
    3. 使用量化器,将高频信息压缩,因为低频信息比高频信息更重要。移除50%的高频信息,编码信息只损失5%。这是Jpeg有损编码的主要原因。
    4. 使用Huffman编码进一步压缩,并将码表放入图片的Head里,用于解码。

    Png

    1. 查分编码预解析
      1. 假设图片的某一行为[2,3,4,5,6,7,8],查分编码后就变为[2,1,1,1,1,1,1]
      2. PNG比较适合渐变颜色,或者相同颜色的压缩
    2. 压缩阶段使用Huffman编码

    Webp

    1. 分块,每个块包含16*16的亮度块和两个8*8的色块
    2. 帧内预测,V_PRED用块中最上面一行填充所有行,H_PRED使用块中第一列填充所有列,DC_PRED使用L和A中所有像素的平均值作为唯一的值填充block。使用哪种分块模式是动态决定的,选与原始值最小的那种预测模式
      •  
    3. 将预测出来矩阵和原矩阵的差值做DCT变换
    4. 量化压缩,压缩高频区域
    5. 算术编码,压缩效率高于Huffman编码

    总结

    WebP的压缩效率比Jpeg高的原因主要是Webp编码的是预测的差值和使用了算术编码

  • 相关阅读:
    vue.js 源代码学习笔记 ----- html-parse.js
    vue.js 源代码学习笔记 ----- text-parse.js
    vue.js 源代码学习笔记 ----- keep-alives
    一些图片剪切组件.
    好听的粤语歌..
    jQuery框架Ajax常用选项
    form自动提交
    .NET EF 框架-实现增删改查
    简单抓取小程序大全,并展示
    C#关于调用微信接口的代码
  • 原文地址:https://www.cnblogs.com/billshen/p/13463103.html
Copyright © 2011-2022 走看看