图片示范

fig: 动物卡通图片

fig: 动物图片

GIF格式

其中GIF格式采用的是LZW的无损压缩算法,这是一种字典索引的压缩方法,原理是减少每点的存储位数以减少图像文件的大小,也就是通常所说的颜色抖动。因而实际存储数据的并不是图像的直接色彩,而是存储的index,通过index来查询存储颜色的字典(类似我们上次作业实现的采色板)。index通常最高是存储八位,也就是2^8=256种颜色。

但实际在用rgb存储时,一副全色图像是采用直接色彩存储,每色块存8*3=24位。

  • 我尝试对老师给的动物图片先转为bmp其大小为2095k,然后用ps转为8位gif,发现大小变为了257k,差不多变为原来的1/(2^3=8)

所以对于色彩变化不明显的简单图片我们一般采用gif压缩,原因就是基于LZW的原理:原始数据串中有大量的子串多次重复出现的话LZW压缩效果效果就会越好。针对具体图像来说也就是颜色种类越少越好,像素块色彩值重复度就高。gif压缩不会丢失任何数据而且又比同等效果的jpg图要小。

JPEG格式

JPEG压缩是一种偏向平衡性的格式,它会舍弃掉人眼根本无法感知的颜色信息,以使文件尽可能小并且细节不丢失。因此,它是一种有损格式。它颜色丰富并且很适合那些允许轻微失真的像素色彩丰富的图片(如相片)。

  • jpeg的压缩比例主要是在于量化一步中对于图像细节的保留程度,这一步采用的量化表也是从广泛实验中根据人对色彩的敏感程度得出。而且根据亮度和色度的精度要求不同采用不同量化表。前者细量化,后者粗量化。
  • 最后的熵编码一般采用霍夫曼编码,而JPEG的霍夫曼表是由一定规则生成,只要给出少量的描述即可生成相应的JPEG的霍夫曼表,这也减少了存储的字符位数。

JPEG的图片相比gif的优点,是采用了直接色,得益于更丰富的色彩,JPEG非常适合用来存储照片,用来表达更生动的图像效果,比如颜色渐变。

图片存储格式分析

所以对于动物图片这张图,它的颜色丰富度比较低,同时也已经存为jpg了,再二次压缩为jpg会失真度较高,也就是显得很糊,因而我们适合采用gif压缩。

而动物卡通图片这张图颜色种类丰富,渐变也比较明显,因而只用256种色彩存储很难达到较好的色彩效果,所以采用jpeg压缩。

**首先先比较第一张动物图片。**先看压缩率,将第一幅图存为同等效果的jpg和gif,gif的图片大小为410k,而jpg的图片大小为521k;接着再看失真率,因为gif是无损压缩,而jpg是有损压缩,所以gif图片视觉的清晰度要高于jpg压缩,失真度较小。所以第一幅图无论是从压缩率还是失真率来说gif压缩都会略胜一筹。

结果对比部分:

jpg

gif

**然后比较第二幅动物卡通图片。**从压缩率来看,从同一张图片进行同等效果的压缩后gif的大小为348k,而jpg的大小为210k。接着根据失真度比较,gif最多只能存储8位,也就是256种颜色。而jpg虽然有一定的数据精度损失,但是是以直接色彩的方式存储,颜色丰富程度要远好于gif,而对于一些细节的渐变效果也比较好,所以这幅图jpg的视觉效果较好。所以综合压缩率和失真率来说这幅图用jpeg压缩效果更好。

jpg

gif

**ps:**为什么同样是gif压缩第一幅图就会比jpg占内存小而第二幅图就会比jpg大呢?个人分析是因为第一幅图色彩丰富度太低,图片颜色种类少于256种,所以gif存储不需要8位(1~7位即可)就可以将图片色彩全部表示。而第二幅图色彩丰富度较高,颜色种类多于256种,gif最多也只能存八位,所以是将图片以8位索引的形式存的,图片大小就大于gif。

之后试了一下将第一幅图用ps强行存为8位,图片的内存大小也确实要比jpg大,所以得出结论如果将gif存为8位(256色索引),它的压缩效果是要比jpeg压缩差的,而且视觉上的色彩丰富程度也不达jpg。然而如果图片色彩丰富度低,例如能用128甚至更少的色彩存储,那么gif的压缩效果是会比jpg好,同时因为是无损压缩又不会造成图片的失真。

多媒体 || GIF压缩与JPEG压缩的对比相关推荐

  1. DICOM笔记-解析JPEG压缩格式DCM文件

      项目中使用了DICOM文件保存图像,之前经常遇到DICOM内放置的是short类型或者float类型的二维图像,按照之前的代码处理JEPG压缩的DICOM文件,当然会出现问题:从网上查到资料,是由 ...

  2. JPEG压缩原理与PyTorch实现

    背景介绍 JPEG (Joint Photographic Experts Group) 是JPEG标准的产物,该标准由国际标准化组织(ISO)制订,是面向连续色调静止图像的一种压缩标准.JPEG格式 ...

  3. 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( 初始化压缩对象 | 打开文件 | 设置压缩参数 | 写入压缩图像数据 | 完成压缩 | 释放资源 )

    文章目录 一.使用 libjpeg-turbo 压缩图片流程 二.初始化 JPEG 压缩对象 三.打开文件 四.设置压缩参数 五.开始压缩 六.循环写入压缩数据 七.完成图片压缩及收尾 八.libjp ...

  4. java jpeg压缩解码_JPEG图像压缩原理简介

    JPEG(发音:[ˈdʒeɪpɛg])是一种针对照片视频而广泛使用的有损压缩标准方法. 这个名称代表 Joint Photographic Experts Group(联合图像专家小组).联合图像专家 ...

  5. fdct算法 java_ImageSharp源码详解之JPEG压缩原理(3)DCT变换

    DCT变换可谓是JPEG编码原理里面数学难度最高的一环,我也是因为DCT变换的算法才对JPEG编码感兴趣(真是不自量力).这一章我就把我对DCT的研究心得体会分享出来,希望各位大神也不吝赐教. 1.离 ...

  6. 转载的JPeg压缩文档(很好,易懂)

    作者:云风 时间: 2006-07-20 文档类型:原创 来自:云风工作室 写在前面 1. 为什么写这个文档? 云风想对 JPEG/MPEG 有一个系统的研究, 但是苦于找到好的资料. 而英文水平又不 ...

  7. JPEG压缩原理与DCT离散余弦变换 量化

    原文网址:http://blog.csdn.net/newchenxf/article/details/51719597 1 前言 JPEG是joint Photographic Experts Gr ...

  8. 【Android 内存优化】Android 原生 API 图片压缩代码示例 ( PNG 格式压缩 | JPEG 格式压缩 | WEBP 格式压缩 | 动态权限申请 | Android10 存储策略 )

    文章目录 一. 图片质量压缩 二. 图片尺寸压缩 三. Android 10 文件访问 四. 完整源码示例 上一篇博客 [Android 内存优化]图片文件压缩 ( Android 原生 API 提供 ...

  9. JPEG压缩matlab实现

    请注意:本文代码参考用MATLAB实现JPEG压缩过程 原作者为新浪博客:dzh_漫漫修行路 文章目录 JPEG原理流程 源代码 JPEG原理流程 1.色彩空间转换及相应预处理 在进行JPEG 压缩之 ...

最新文章

  1. 语言abline画不出线_教材中定性分析的R语言实例
  2. Python3学习笔记01-环境安装和运行环境
  3. linux特殊符号大全
  4. 智源-计算所虚假新闻检测大赛 | 探秘假新闻中的视觉信息
  5. golang 的交叉编译
  6. python pandas教程百家号_Pandas 常见的基本方法
  7. view-controller标签
  8. C#3.0中的新特性
  9. 重温微积分 —— 偏微分与链式法则
  10. go mockweb接口_GitHub - duxiaoman/AnyMock: 通用接口Mock平台
  11. c语言入门很难,C语言入门教程,C语言编程,从入门到精通,没你想的那么难
  12. 决策树算法(ID3算法)
  13. Aluminium cold plate
  14. 爬虫破解瑞数js逆向动态混淆
  15. hadoop学习之路(3)
  16. 大型综合网络搭建详细步骤教程
  17. 朋友圈转发集赞截图生成工具,以假乱真!
  18. 定时清理服务器日志文件
  19. NOIP2016·洛谷·天天爱跑步
  20. windows服务编程

热门文章

  1. 【2018年11月12日】其他化学制品行业的股票估值和排名
  2. 作为技术人员,写博客对我们到底有什么好处?为什么要写博客?
  3. HTML5之 Microdata微数据
  4. Thinkphp5结合layer导入excel
  5. virtualbox虚拟机识别U盘的详细教程
  6. 同步数据显示服务器异常,同步异常云端服务器异常
  7. CoAP协议学习——CoAP基础
  8. 考研英语(二)——简单句
  9. 显卡内存和计算机内存,显卡爆显存和满显存有什么区别
  10. Learn OpenGL 笔记7.1 PBR Theory(physically based rendering基于物理的渲染 理论)