今天下午二狗子照常上班摸鱼的时候,突然看到了一则消息,消息说 GIF 的发明人因新冠去世了。作为一个自诩理性的互联网人,二狗子第一反应是看到了一个离谱谣言,可是查看了多方消息后,二狗子难过地发现这是真的。

斯蒂芬·威尔海特就职于 CompuServe(全球第一家网络服务提供商),当时这家公司想要在网上展现彩色天气图等信息,但因受限于网络带宽而束手无策。斯蒂芬·威尔海特了解一些压缩技术,于是他参与了创造 GIF 格式的工作。在之后的1978 年,CompuServe 公司推出 GIF 格式,诞生了世界上第一张动图。

GIF 全称 Graphics Interchange Format,即图形交换格式,以8位色(即256种颜色)重现真彩色的图像。它有效地减少了图像文件在网络上传输的时间,是目前互联网广泛应用的网络传输图像格式之一。

除去 GIF,目前互联网广泛使用的图像格式还有以下种类:

  • JPEG

  • png

  • WebP

GIF

前面我们也提到了一点关于 GIF 的介绍,作为它最大的,与 JPEG 和 PNG两种格式不同的特点,就是 GIF 是“能动”的。我们通常将 GIF 用于从图像文件创建动画,可以通过在压缩中合并无损质量,无损传输和存储这些文件,并且对图像库的存储影响较小。

GIF 是无损的,采用 GIF 格式保存图片不会降低图片质量。得益于数据的压缩,文件体积小,也是 GIF 格式的优点。此外,它还具有支持动画以及透明背景。

GIF 格式适用于对色彩要求不高同时需要文件体积较小的场景,比如企业 Logo、线框类的图等。因其体积小的特点,现在 GIF 也已经被广泛应用在各类网站中。

JPEG

JPEG 全称 Joint Photographic Expert Group,即联合照片专家组。是由国际标准化组织(ISO)制定的面向连续色调静止图像的一种压缩标准。它是我们常说的 JPG 的正式扩展名,那为什么会出现 JPG 这种说法呢?这是因为 DOS、Windows 95 等早期系统采用的 8.3 命名规则只支持最长 3 字符的扩展名,所以为了兼容性使用了 .jpg 的形式。而后来所有的 apple 旗下机体都不限制扩展名长度,让 JPEG 能够完整出现。不过因为大家已经喜欢了 JPG 的喊法,所以现在 JPG 也依然很流行。

JPEG 图片格式的设计目标,是在不影响人类可分辨的图片质量的前提下,尽可能压缩文件大小。这意味着JPEG 去掉了一部分图片的原始信息,也就是进行了有损压缩。JPEG 的图片的优点,是采用了直接色,得益于更丰富的色彩,JPEG 非常适合用来存储照片,用来表达更生动的图像效果,比如颜色渐变。

然而,JPEG 不适合用来存储企业 Logo、线框类的图。因为有损压缩会导致图片模糊,而直接色的选用,又会导致图片文件体积更大。

PNG

PNG 全称 Portable Network Graphics,即可移植网络图形。是 1994 年由万维网联盟(W3C)的一个工作组开发的,当初的开发目的是为 GIF 格式创建一种现代的、免费的替代方案。

PNG 采用无损压缩算法的位图格式,文件后缀名为 .png。使用的是从 LZ77 派生的无损数据压缩算法,一般应用于 JAVA 程序、网页中,它的压缩比高,生成文件体积小。

PNG 格式是我们在数字设计项目中最常使用的格式,通常比其他格式的文件大小要大。但是它保留了硬性边缘效果,且可以处理大量颜色。另外 PNG 有个比较有趣的特性,那就是支持透明背景,因此大多数网站PNG 格式作为 Logo 。

看到这里相信大家都发现了三者的一点共同点,它们都提到了压缩和损坏,有的是有损的,有的是无损的。难道所有的图片都必须压缩吗?其实是可以不压缩的,比如 BMP 就可以不压缩存储。但是一两张图还可以这么做,如果图片多起来那对于存储和传输就造成了极大的压力。

因此如何在保证图片质量不变的情况下,压缩图片进而节省流量带宽,让传输更快,带来更好的观看体验就变得重要起来。

但是作为传统的图片格式 JPEG,PNG,GIF 等其实已经没有很大的优化空间了,那唯一剩下的道路就是发掘一种新的图片格式,或者压缩格式来解决这个问题,WebP 应运而生。

WebP

WebP 是 Google 于 2010 年提出了一种新的图片压缩格式,目的就是为 Web 上的图片资源提供卓越的有损、无损压缩。在与其他格式同等质量指数下提供更小,更丰富的图片资源,以便资源在 Web 上访问传输。

WebP 图片格式来源于 VP8 视频编解码器,也就是 WebM 视频容器,是 WebM 视频格式的单个压缩框架。VP8 编解码器的一个强大功能就是能够进行帧内压缩,或者更确切地说,能将视频的每个帧都被压缩,再压缩帧与帧之间的差异。

作为专为压缩而推出的格式,WebP 具有以下特性:

  • 有损压缩:有损压缩基于 VP8 关键编码。VP8 是 On2 Technologies 创建的视频格式,是 VP6 和 VP7 格式的后续版本。

  • 无损压缩:采用预测变换,颜色变换,减去绿色,LZ77 反响参考等技术进行压缩。

  • 透明度:8位 Alpha 通道对图形图像很有用。Alpha 通道可以与有损 RGB 一起使用。与其它格式图片所不支持的 WebP 特有的功能。

  • 动画:它支持真彩色动画图像,即可以支持动态图( 类Gif 图)

  • 元数据:它可能具有 EXIF 和 XMP 元数据

  • 颜色配置文件:它可能具有嵌入式 ICC 配置文件。

同时它的效果也是明显的,以 JPEG 作为对比,当 WebP 将 JPEG 压缩到相当于原图 90% 质量时,图片体积可以减少 50% 左右。当 WebP 将 JPEG 压缩到相当于原图 80% 质量时,图片体积则减少了 60%~80%。

在 WebP 出现后,它凭借自己优异的图片压缩性能,以及兼备无损和有损两种压缩算法,以及唯一可以对 GIF 进行压缩的特点,迅速在各大网站、App 普及。那要如何才能让图片变成 WebP 格式呢?

最简单的方法就是直接接入云服务的图片处理功能,比如又拍云 WebP 自适应:

在后台一键开启 WebP 自适应功能,即可通过 CDN 平台智能判断客户端浏览器是否支持 WebP 解码,如果支持则返回 WebP 格式图片,如果不支持则会返回原图,在客户端以及源站无需任何改动。

推荐阅读

面试官问,Redis 是单线程还是多线程?我懵了

Golang 常见设计模式之装饰模式

悲报, GIF 之父因新冠去世的更多相关文章

  1. LabVIEW+OpenVINO在CPU上部署新冠肺炎检测模型实战

    前言 之前博客:[YOLOv5]LabVIEW+OpenVINO让你的YOLOv5在CPU上飞起来给大家介绍了在LabVIEW上使用openvino加速推理,在CPU上也能感受丝滑的实时物体识别.那我 ...

  2. python新冠疫情分析-世界疫情数据爬取

    事情发展:1.毕业设计是关于疫情数据的可视化展示(基于java,需要做数据可视化,需要做管理员端对数据进行增删改查处理)2.飞起来速度学爬虫,参考了非常多资料,比如b站的黑马爬取(报错,就是在切片那里 ...

  3. SIR模型预测新冠病毒肺炎发病数据

    大家还好吗? 背景就不用多说了吧?本来我是初四上班的,现在延长到2月10日了.这是我工作以来时间最长的一个假期了.可惜哪也去不了.待在家里,没啥事,就用python模拟预测一下新冠病毒肺炎的数据吧.要 ...

  4. iMX287A基于嵌入式Qt的新冠肺炎疫情监控平台

    目录 1.前言 2.数据接口的获取 3.Qt界面的实现 4.在开发板上运行Qt程序 5.最终效果 6.代码下载 @ 1.前言 之前我使用在桌面版本Qt实现了肺炎疫情监控平台:基于Qt的新冠肺炎疫情数据 ...

  5. 参加Folding@Home(FAH)项目,为战胜新冠肺炎贡献出自己的一份力量

    鉴于新冠病毒(COVID-19)在全球范围内的大规模传播,PCMR和NVIDIA呼吁全球PC用户加入Folding@home项目贡献自己闲置的GPU计算力,协助抗击新冠状病毒疫情. 目前全球有超过40 ...

  6. 面试刷题26:新冠攻击人类?什么攻击java平台?

    可恶的新冠病毒攻击人类,搞得IT就业形势相当不好?好在有钟南山院士带领我们提前开展好了防护工作! java作为基础平台安装在各种移动设备,PC,小型机,分布式服务器集群,各种不同的操作系统上.所以,对 ...

  7. Python模块---制作新冠疫情世界地图()

    目录 pyecharts模块 简介 安装pyecharts 测试pyecharts模块 pyecharts实战:绘制新冠肺炎疫情地图 需求分析 请求数据 提取数据 处理数据 制作可视化地图 设置可视化 ...

  8. python画新冠肺炎国内和世界各国累计确诊数量热图

    新冠肺炎国内疫情基本控制住,很多地方都开始摘下口罩了.但是国外的疫情依然处于爆发期,特别是美国,截止目前其累计确诊数量已突破110w.五一节北京柳絮杨絮满天飞,不适合外出.在家心血来潮,献丑画一下各地 ...

  9. Python小白的数学建模课-A3.12 个新冠疫情数模竞赛赛题与点评

    新冠疫情深刻和全面地影响着社会和生活,已经成为数学建模竞赛的背景帝. 本文收集了与新冠疫情相关的的数学建模竞赛赛题,供大家参考,欢迎收藏关注. 『Python小白的数学建模课 @ Youcans』带你 ...

  10. 数据、人工智能和传感器按COVID-19新冠流感排列

    数据.人工智能和传感器按COVID-19新冠流感排列 Data, AI and sensors arrayed against COVID-19 各国政府.卫生保健专业人士和工业界争先恐后地应对Cov ...

随机推荐

  1. vue 项目中遇到的问题及解决方案

    问题:从码云上提前代码时npm run dev 报错 解决方法 在目录外层新建一个postcss.config.js 放入以下代码 module.exports = {       plugins:  ...

  2. 随着Web3.0的到来,IPFS能否成为未来?

    IPFS能否成为未来互联网存储市场的霸主? 首先在说IPFS之前,我们有必要先聊一聊HTTP,因为目前我们从互联网上看到的,用的,基本上都是HTTP,自从1991年发明了HTTP,到现在已经多了30多 ...

  3. PVE 下虚拟机 Ubuntu 无法进入恢复模式的解决方案——提取原有系统文件

    问题说明 某天重启虚拟机 Ubuntu,发现虚拟机只有容器IP,桥接的接口在虚拟机显示状态为 DOWN: 想重启进入恢复模式,却发现恢复模式一直花屏,无法使用: 没有办法了,只能想办法提取原有系统内原 ...

  4. 数据库系列:RR和RC下,快照读的区别

    数据库系列:MySQL慢查询分析和性能优化 数据库系列:MySQL索引优化总结(综合版) 数据库系列:高并发下的数据字段变更 数据库系列:覆盖索引和规避回表 数据库系列:数据库高可用及无损扩容 数据库 ...

  5. 火山引擎ByteHouse:如何优化ClickHouse物化视图能力?

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近期,火山引擎 ByteHouse 升级了基于 ClickHouse 的物化视图能力,为解决数据量爆炸式增长带来的 ...

  6. 🔥🔥Java开发者的Python快速实战指南:探索向量数据库之文本搜索

    前言 如果说Python是跟随我的步伐学习的话,我觉得我在日常开发方面已经没有太大的问题了.然而,由于我没有Python开发经验,我思考着应该写些什么内容.我回想起学习Java时的学习路线,直接操作数 ...

  7. 学会XPath,轻松抓取网页数据

    一.定义 XPath(XML Path Language)是一种用于在 XML 文档中定位和选择节点的语言.XPath的选择功能非常强大,可以通过简单的路径选择语法,选取文档中的任意节点或节点集.学会 ...

  8. 七天.NET 8操作SQLite入门到实战 - 第六天后端班级管理相关接口完善和Swagger自定义配置

    前言 在上一章节我们在后端框架中引入 SQLite-net ORM 并封装常用方法(SQLiteHelper),今天我们的任务是设计好班级管理相关的表.完善后端班级管理相关接口并对Swagger自定义 ...

  9. 记一次线上Oracle连接耗时过长的问题

    问题现象 1.远程Oracle数据库通过IP:PORT/SERVICE_NAME连接 2.应用服务通过Docker容器部署,访问Oracle联通性测试接口,需要50s左右才能返回连接成功: 3.写了个 ...

  10. [GDOIpj221C] 流水线

    第三题 流水线 提交文件: line.cpp 输入文件: line.in 输出文件: line.out 时间空间限制: 2 秒, 256 MB 在计算机组成原理这门课中,小明的老师布置了实现 CPU ...