原文地址:GIF、JPEG 和 PNG的区别在哪里? 作者:苗得雨

GIF、JPEG 和 PNG 是三种最常见的图片格式。

  • GIF:1987 年诞生,常用于网页动画,使用无损压缩,支持 256 种颜色(一般叫 8 bit 彩色),支持单一透明色;
  • JPEG:1992 年出世,照片一般都用这个格式,有损压缩,24 bit 真彩色(224 = 17 万种颜色),不支持动画,不支持透明色;
  • PNG:1996 年问世,无损压缩,最常见的使用格式是 256 索引色(PNG-8)和 24 bit 真彩色(PNG-24)(当然 PNG 支持的颜色格式远不止此),支持 full alpha 通道(256 级可调半透明色),不支持动画。

简单比较:

  • JPEG v.s. PNG:JPEG 在照片压缩方面拥有巨大的优势,这方面无可替代,但是 JPEG 是有损压缩,图片质量会有损失。另外,一般屏幕截屏用 PNG 格式不但比 JPEG 质量高而且文件大小还更小(维基有图)。
  • GIF v.s. PNG:GIF 只在简单动画领域有优势(其实,GIF 256 色限制以及无损压缩机制导致高质量的动画的发布一般都使用 Flash 等格式),只要没有动画,PNG 完全可以取代 GIF。
  • 防锯齿:下面是 GIF 和 PNG 防锯齿处理的对比,六张小图片是分别放到浅黄和深绿背景下的情景,三张大图是深绿背景情形的放大。由于 GIF 没有半透明一说,所以防锯齿处理时只能假设背景是白色,这样的 GIF 放在深色背景下还不如不防锯齿。而 PNG 图片可以轻松应付各种背景颜色,特别适合用来做网页和应用程序里的通用防锯齿图标适应不同皮肤,没有 full alpha 通道的 JPEG 和 GIF 都做不到这一点。

可以看到,除了照片和动画,PNG 是最好的格式,但是 PNG 为什么到最近几年才流行起来?有很多原因:

  • PNG 诞生的时候互联网已经初具规模,当时 GIF 和 JPEG 已经是很流行的格式了,换格式的迁移成本是很大的,有时候惯性是一个很可怕的东西。
  • 浏览器的 PNG 支持比较落后,比如 IE 就是到 IE4 才开始支持 PNG。
  • PNG 当初标准里把 alpha 通道写成了 optional 的,土鳖的 IE 一直到 IE7 才开始支持 full alpha 通道。而一般网页图标 256 色足够,所以为了支持 IE6,PNG 相对于 GIF 毫无优势可言,更何况 GIF 还支持动画。
  • 尽管从原理上说,同样质量的 PNG 图片文件一般要比 GIF 要小,但是早期很多图片编辑器不支持 PNG,甚至支持的也没有完全利用 PNG 压缩算法里最精妙的部分(最典型的例子就是早期的 Photoshop),保存出来的 PNG 往往巨大无比。现在的软件已经没有这些问题了,但是这个偏见还广泛存在。

转载于:https://www.cnblogs.com/jinhengyu/p/10257989.html

[转载]GIF、JPEG 和 PNG的区别在哪里?相关推荐

  1. 转载:Ajax及 GET、POST 区别

    转载:Ajax及 GET.POST 区别 收获: xhr.setRequestHeader(), xhr.getResponseHeader() 可以设置和获取请求头/响应头信息; new FormD ...

  2. (转载)文件系统与数据库系统的区别

    转自:http://storage.chinabyte.com/14/11568014.shtml 很多人刚刚接触数据库时都有疑问:在很多程序中都会是有的直接读取一个静态文件,有的是读取数据库.直接读 ...

  3. jpg图片与jpeg图片格式的区别(没有区别,.jpg只是扩展名.jpeg的缩写)

    参考文章1:普及一下关于图像格式JPG和JPEG区别 参考文章2:opencv图像处理:JPG.PNG及BMP的区别? 参考文章3:输入层为4通道的png图像,有相关的要求吗? 参考文章4:.jpg ...

  4. 转载 java抽象类与接口的区别

    Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和inte ...

  5. 【转载】进程与线程的区别

    进程是什么? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本:进程是程序的一次 ...

  6. 嵌入式开发之davinci--- 8148/8168/8127 中的图像采集格式Sensor信号输出YUV、RGB、RAW DATA、JPEG 4种方式区别...

    简单来说, YUV: luma (Y) + chroma (UV) 格式, 一般情况下sensor支持YUV422格式,即数据格式是按Y-U-Y-V次序输出的 RGB: 传统的红绿蓝格式,比如RGB5 ...

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

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

  8. jpg图片与jpeg图片格式的区别(没有区别,.jpg只是扩展名.jpeg的缩写)JPEG图像压缩(YUV4:2:0 缩减采样、缩减取样)(离散余弦变换 DCT算法)(量化)(熵编码)(霍夫曼哈夫曼)

    文章目录 20191026 20220414 更新,更系统去了解里面的编码压缩流程 科普:关于图像格式JPG和JPEG你知多少? 一.前言 二.JPEG和JPG的关系 三.色彩空间转换 缩减取样 离散 ...

  9. 【转载】模式识别、机器学习的区别和联系

    版权声明:欢迎转载,转载请注明出处:土豆洋芋山药蛋 https://blog.csdn.net/qq_33414271/article/details/78682239 </div>< ...

最新文章

  1. Go 知识点(15)— 切片长度和容量
  2. Verdi 基础教程
  3. Java 阶段面试 知识点合集 - 我们到底能走多远系列(15)
  4. 新一代云原生监控系统Prometheus--理解数据模型/指标/标签/PromQL/Exporter
  5. SAP License:ERP系统中供应商管理怎么做?
  6. jquery获取元素索引
  7. OSWatcher使用简介
  8. CBoard框架使用总结五--扩展菜单配置功能
  9. 【小白】线性表的链式存储结构的实现(C语言版)
  10. Python调用百度API进行人像动漫化
  11. 基于Jenkins搭建iOS持续集成开发环境
  12. 几款U盘数据恢复的软件使用测评
  13. Python 爬取京东商品评论 + 词云展示
  14. 微信聊天消息,好友转账消息的xml数据样本(分3种情况),以及各个字段含义
  15. C++11 decltype 的用法粗解
  16. 洛谷 P2216 [HAOI2007] 理想的正方形
  17. 【职场进阶】做好项目管理,先从明确职责开始
  18. and true和if都是python语言的保留字_python语言保留字有哪些
  19. 封闭式基金周折价率排行表20061013(ZT)
  20. HBase2.x(十六) HBase与 Hive 的集成

热门文章

  1. 港中文等提出:开放世界实体分割
  2. 收藏 | 深度学习图像分类任务中那些不得不看的技巧总结
  3. mysql存储过程split_mysql存储过程实现split示例
  4. 如何使用sklearn进行数据挖掘
  5. 深度学习(六十八)darknet使用
  6. python 公网ip_使用Python更换外网IP的方法
  7. 信息安全工程师考试大纲-科目1:信息安全基础知识
  8. Java基础---分支结构(if--else / switch---case)
  9. Jmeter之CSS选择器/JQuery选择器关联
  10. AutoFac+MVC+WebApi源码----我踩过的坑