[转载]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 往往巨大无比。现在的软件已经没有这些问题了,但是这个偏见还广泛存在。
[转载]GIF、JPEG 和 PNG的区别在哪里?的更多相关文章
- 转载:Ajax及 GET、POST 区别
转载:Ajax及 GET.POST 区别 收获: xhr.setRequestHeader(), xhr.getResponseHeader() 可以设置和获取请求头/响应头信息; new FormD ...
- GIF、JPEG 和 PNG的区别在哪…
原文地址:GIF.JPEG 和 PNG的区别在哪里?作者:苗得雨 GIF.JPEG 和 PNG 是三种最常见的图片格式. GIF:1987 年诞生,常用于网页动画,使用无损压缩,支持 256 种颜色( ...
- [转载]java int与integer的区别
声明: 本篇文章属于转载文章,来源:
- 【转载】new和malloc的区别
本篇随笔为转载,原贴地址:C++中new和malloc的十点区别. 前言 几个星期前去面试C++研发的实习岗位,面试官问了个问题: new与malloc有什么区别? 这是个老生常谈的问题.当时我回答n ...
- 【转载】gcc和g++的区别
[说明]本文转载自 静心 的文章 http://blog.163.com/lu_jun520/blog/static/5699613420116205148239/ 一般linux系统都自带了gcc编 ...
- Java_类和对象(完美总结)_转载_覆盖和隐藏的区别,覆盖就不能使用了,而隐藏提供全局方法名或者全局变量名还可以使用
转载自海子:http://www.cnblogs.com/dolphin0520/p/3803432.html Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封 ...
- jpg、jpeg、png... 的区别
对于做设计这一行的人来说,这几个图片格式是最常用的,也是最常见的,几乎每一天都要与他们打交道. 刚刚入门的新人通常不知道在什么地方如何使用他们或者说如何更有效的使用他们. 那他们到底是有什么区别?(一 ...
- [转载] Rss 与 Feed 的概念区别
转载自http://www.chinaz.com/news/2011/0831/207961.shtml 可能很多刚刚接触博客的童鞋们,也和我一样不太了解:rss和feed概念或者说不了解rss和fe ...
- 【转载】ARM与单片机的区别
前几天在博客园的博问模块上面发布了一个博问,可能是我问题描述有些问题,被一个园友指出,ARM与单片机是不同的.所以我特地查了一下ARM与单片机的区别,之前一直以为ARM就是加强版的单片机,stm32无 ...
随机推荐
- Pycharm中的加载多个项目
使用Pycharm,总会创建几个项目文件,有时候又不想全部一个一个的打开,所以这时候需要一个项目共存的方法,现在说一下怎么项目共存. 中英文对照 英文:首先打开setting界面: 中文首先打开设置界 ...
- vue指令v-pre示例解析
v-pre会跳过该元素及其子元素的编译过程,显示原始标签. <div id="app"> <span v-pre>{{msg}} 这句不会编译</sp ...
- oracle-使用数据泵对不同用户和不同表空间的数据迁移
oracle-使用数据泵对不同用户和不同表空间的数据迁移 ---------------------------------------------------2013/11/13 expdp和imp ...
- cnblogs博客自定义
我使用的是博友分享的CCS设计:http://www.cnblogs.com/libaoheng/archive/2012/03/19/2406836.html CSS定制页面风格 /*公用*/ bo ...
- phoenix常用命令
1.登录命令 ./sqlline.py localhost:2181:/hbase-unsecure span { font-family: "Courier New"; font ...
- PHPExcel导出excel表格
if(!function_exists('exportExcel')){ //导出excel文件 function exportExcel($datas, $save_method='ht ...
- js基础提高(二)
JavaScript基础提高(二) 上篇写的是JavaScript的历史.基本的数据类型和基本的语法进填的话讲的就深入一些了. js的函数 1.js函数定义的方式 (1)普通方式 语法:functio ...
- Win7电脑桌面的Administrator图标没了怎么办
Win7电脑桌面的Administrator图标没了怎么办.. win7电脑桌面的Administrator图标没了,怎么办?在桌面空白处右键选择个性化,进入个性化之后,左边栏选择“更改桌面图标”勾选 ...
- Sublime Text 2安装图解
Sublime Text 2安装图解.. ---------------- ---------------- ---------------- ---------------- ----------- ...
- yii2 Rbac使用yii命令一键建表
首先在web.php和console.php配置authmanager组件,web.php是应用配置文件,console.php是yii命令配置文件,都需要配置. 在components加入如下配置: ...