GIF/PNG和JPG的区别

GIF/PNG和JPG这三种格式的图片被广泛应用在现今的互联网中,gif曾在过去互联网初期慢速的情况下几乎是做到了大一统的地位,而现如今随着互联网技术应用和硬件条件的提高,png和jpg格式的图片越来越多的被应用,gif昔日的辉煌一去不复。下面让我们来看看他们的区别:

1、GIF(Graphics Interchange Format)

简介

GIF图形交换格式是一种位图图形文件格式,以8位色(即256种颜色)重现真彩色的图像。它实际上是一种压缩文档,采用LZW压缩算法进行编码,有效地减少了图像文件在网络上传输的时间。它是目前广泛应用于网络传输的图像格式之一。

优点

  1. 优秀的压缩算法使其在一定程度上保证图像质量的同时将体积变得很小。
  2. 可插入多帧,从而实现动画效果。
  3. 可设置透明色以产生对象浮现于背景之上的效果。

缺点

由于采用了8位压缩,最多只能处理256种颜色,故不宜应用于真彩图像。

2、PNG(Portable Network Graphics)

便携式网络图片(Portable Network Graphics),简称PNG,是一种无损数据压缩位图图形文件格式。PNG格式是无损数据压缩的,允许使用类似于GIF格式的调色板技术,支持真彩色图像,并具备Alpha(半透明)等特性。现在有很多人使用PNG格式于互联网及其他方面上。

PNG规范 W3C建议 (有了解更多详细理论方面知识,和具有探索精神的童鞋可以去看看 抱歉是英文的)

优点

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

缺点

但也有一些软件不能使用适合的预测,而造成过分臃肿的PNG文件。

3 、JPG(Joint Photographic Experts Group)

JPEG是一种针对相片影像而广泛使用的一种失真压缩标准方法。JPEG的压缩方式通常是破坏性资料压缩(lossy compression),意即在压缩过程中图像的品质会遭受到可见的破坏。

优点

JPEG/JFIF是最普遍在万维网(World Wide Web)上被用来储存和传输照片的格式。JPEG在色调及颜色平滑变化的相片或是写实绘画(painting)上可以达到它最佳的效果。在这种情况下,它通常比完全无失真方法作得更好,仍然可以产生非常好看的影像(事实上它会比其他一般的方法像是GIF产生更高品质的影像,因为GIF对于线条绘画(drawing)和图示的图形是无失真,但针对全彩影像则需要极困难的量化)。

缺点

它并不适合于线条绘图(drawing)和其他文字或图示(iconic)的图形,因为它的压缩方法用在这些图形的型态上,会得到不适当的结果

GIF、PNG和JPG的区别相关推荐

  1. RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别

    1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...

  2. C++ 笔记(28)— C++ 中 NULL和 nullptr 的区别

    最近看公司代码的时候发现在判断指针是否为空的时候,有的时候用的是 NULL, 有的时候用的是 nullptr 感觉很奇怪,好奇心驱使我查了下两者的区别,发现还是有很多细节需要学习的. 1. NULL ...

  3. gcc 和 g++ 的联系和区别,使用 gcc 编译 c++

    GCC 编译器已经为我们提供了调用它的接口,对于 C 语言或者 C++ 程序,可以通过执行 gcc 或者 g++ 指令来调用 GCC 编译器. 实际使用中我们更习惯使用 gcc 指令编译 C 语言程序 ...

  4. Python2 与 Python3 区别

    Python2.x 与 Python3.x 区别 1. print 函数 Python2 中 print 是语句(statement),Python3 中 print 则变成了函数.在 Python3 ...

  5. Docker 入门系列(1)- 初识容器,镜像、容器、仓库的区别

    Docker 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发 ...

  6. HTTP 协议入门 — (TCP/IP协议族、通信传输流、URI 与 URL 的区别、Cookie 状态管理、HTTP 支持的方法、状态码类别、HTTP 首部字段)

    TCP/IP协议族 在介绍 HTTP 协议之前,我们先对 TCP/IP 协议族有个大概的了解,TCP/IP 协议从上到下主要分为应用层.传输层.网络层和数据链路层,各层的主要功能如下表所示: 协议层 ...

  7. python二进制打开(rb)和文本格式打开(r)什么区别?

    使用 open() 函数以文本格式打开文件和以二进制格式打开文件,唯一的区别是对文件中换行符的处理不同. 在 Windows 系统中,文件中用 "\r\n" 作为行末标识符(即换行 ...

  8. python中__dict__与dir()区别

    前言 Python下一切皆对象,每个对象都有多个属性(attribute),Python对属性有一套统一的管理方案. __dict__与dir()的区别: dir()是一个函数,返回的是list: _ ...

  9. java和C#面向对象的区别

    问题:C#中的构造函数和java的构造函数一样吗? 答: .net的项目中,写实体Entity属性时,经常会为每一个属性写一对get和set方法,在用到这个实体或是一个类时,通过new实例化一个对象, ...

  10. 判别模型和生成模型的区别

    20210703 https://www.zhihu.com/question/20446337 机器学习"判定模型"和"生成模型"有什么区别? 重点 http ...

最新文章

  1. 矩阵连乘算法代码JAVA_矩阵连乘问题的动态规划算法(java)
  2. python 消息机制_Python并发编程之线程消息通信机制任务协调(四)
  3. 逃离数学焦虑、算法选择,思考做好机器学习项目的3个核心问题
  4. 卡片游戏 数学期望
  5. java 非法操作异常_java – 空结果集上的非法操作
  6. C++ this指针初步使用,与链式编程
  7. 请概述可视化卷积神经网络的中间输出的基本思想。_最详细的卷积神经网络入门指南!...
  8. “力挺Java!拒绝Python”9万程序员刷爆朋友圈……
  9. MiniDao Framework 1.3.0 发布,J2EE持久化解决方案
  10. python模块下载1002python模块下载_【Python】Python的urllib模、urllib2模块的网络下载文件...
  11. 计算机复试考研专业课,2018计算机考研专业课复试复习攻略
  12. linux phy fixed-link
  13. Chrome 鼠标左击右击无效解决办法
  14. ridge regression and lasso analysis-reproduced from csdn
  15. spring(春天)
  16. python模块,库
  17. 基于php+Mysql网上商城系统 开题报告
  18. hadoop进入退出安全模式
  19. 转:詹姆斯·马奇:领导者容易把自己看成是组织中的英雄
  20. Springboot中new出来的实例中含有@Autowired注入时的Spring Bean为NULL

热门文章

  1. 0~n-1缺失的数字(注意尾巴也有可能)
  2. 35岁以前成功的12条黄金法则[ZT]
  3. 论软件项目管理技术及其应用--系统分析师
  4. 基于jQuery实现幻灯片切换效果
  5. ETC欠费超30日将上报个人征信
  6. 多个省市公布大学开学时间!全国仅剩2地“待定”
  7. UVALive 3353 Optimal Bus Route Design
  8. uni-app 自定义图标
  9. solidworks电气元件3d库_Solidworks标准件模型库非标设计国标件 SW素材模板
  10. 电子工程可以报考二建_全国二建报名时间最全统计:2020年二建不到30天就可以报考...