JPEG,PNG,BMP,GIF,SVG


40

我想知道对于相同质量的图像,这些格式中的哪一种需要较少的内存,以及这些格式之间的主要区别是什么。


15
Btw,JPG和JPEG都引用相同的内容(例如,参见en.wikipedia.org/wiki/JPEG),因此标题可以简化一些。
约尼克,

1
不确定我的答案如何不能回答您的原始问题,以及您选择的答案如何...?:-/
Django Reinhardt

4
>这些格式中的哪一种需要较少的内存 Um,请定义“较少的内存”。您是说占用更少的磁盘空间吗?(JPEG用于照片,PNG和/或GIF用于屏幕截图。)您是否表示压缩文件占用的内存空间更少?(与磁盘空间相同。)您是否表示解码后的图像占用的内存空间更少(;当解码为原始图像时,它们基本上是相同的。)
Synetech 2012年

Answers:


54

From TIFF,GIF,JPG,JPEG,PNG和BMP文件之间有什么区别?

BMP-位图。这可能是我记得的第一种数字图像格式。当时,计算机上的每张图片似乎都是BMP。在Windows XP中,Paint程序自动将其图像保存在BMP中。但是,在Windows Vista和更高版本中,图像现在已保存为JPEG。BMP是许多其他文件类型的基础平台。

JPG / JPEG-(联合图像专家组)Jpeg格式用于彩色照片或具有许多混合或渐变的任何图片。边缘锋利时效果不好,除非将其高质量存储,否则往往会使它们模糊一些。这种格式随着数码相机的发明而流行。大多数(如果不是全部)数码相机会将照片作为Jpeg文件下载到您的计算机上。显然,数码相机制造商看到了最终占用更少空间的高质量图像的价值。

GIF-(图形交换格式)Gif格式最适合用于文本,线条图,屏幕截图,卡通和动画。Gif的总数不得超过256种颜色,因此Gif图像相对较小。通常用于快速加载网页。它还为您的网页提供了一个很好的横幅或徽标。动画图片也可以GIF格式保存为一系列静态图片。例如,闪烁的横幅将另存为Gif文件。

PNG-(便携式网络图形)这种无损格式是最好的图像格式之一。它并不总是与所有Web浏览器或图像软件兼容,但如今,它是用于网站的最佳图像格式。我将.png用于徽标和屏幕截图。尽管最终的压缩大小在图像编辑器之间有所不同,但其最惊人的功能之一是能够无损压缩图像(不损失像素)。

TIFF-(带标记的图像文件格式)自1992年以来未更新此文件格式,现在由Adobe拥有。它可以将图像和数据(标签)存储在一个文件中。TIFF可以压缩,但是它以无损格式存储图像数据的能力使TIFF文件成为有用的图像档案,因为与标准JPEG文件不同,使用无损压缩(或不压缩)的TIFF文件可以进行编辑和重新压缩。 -保存而不会丢失图像质量。此文件通常用于扫描,传真,文字处理等。它不再是用于数码照片的通用文件格式,因为jpeg的质量很高且占用的空间较小。


1
请注意,如果没有“ hack”,IE6仍不支持PNG文件中的alpha透明,即半透明的透明区域
Josh Comley,2009年

2
...而且仍然有很多人使用IE6(tinyurl.com/56kp)。 MS要支持它到2014年!:((tinyurl.com/qvdyn5
乔希Comley

9
BMP:这不是其他文件格式的基础。据我所知,BMP标头和文件结构未与其他格式共享(例如,与TIFF相反)。JPEG:它是在数码相机流行之前在网络上创建和存在的。同样,许多数码相机允许保存“原始”格式,尽管供应商特定的内容,但通常是TIFF格式。GIF:不限于每张图片256种颜色,每仅256种颜色(请参阅en.wikipedia.org/wiki/Graphics_Interchange_Format#True_color)。
乔伊(Joey)

4
TIFF:来自数码相机(非傻瓜相机)的原始图像的通用文件和容器格式。TIFF允许其中包含几乎任意数据(因此带有标记),这也意味着它支持从LZW(GIF),LZ77(PNG)到JPEG等其他任意压缩方法。TIFF还允许在一个文件中包含多个图像(页面)
乔伊

4
虽然答案很好地回答了历史和一般用法方面的图片格式差异,但原始答案也询问了相对大小和质量...
camster342 2011年

76

来自lbrandy.com的 xkcd样式:

替代文字


4
很好地说明了这一点:)(即使我从未见过有人主张这种“始终使用JPEG!”政策)
约尼克(Jonik

7
+1,因为这张图片很好地说明了jpeg问题...
Johan

5
希望我可以加倍投票!我发给所有给我发烂jpeg的人!
TimBüthe09年

3
©2008路易·白兰地。版权所有....?
Arjan

3
例如,Facebook拥有此“始终JPEG”政策。我上传了一个不错的99 KB无损PNG图片,Facebook将其转换为丑陋的175 KB JPEG。
保罗

63

您应该意识到一些关键因素...

首先,有两种压缩类型:无损压缩和有损压缩。

  • 无损意味着将图像缩小,但不会影响质量。
  • 有损意味着图像变小(均匀),但有损于质量。如果一遍又一遍以有损格式保存图像,则图像质量会越来越差。

也有不同的颜色深度(调色板):索引色直接色

  • 索引意味着图像只能存储由作者控制的有限数量的颜色(通常为256种),称为“颜色映射”
  • 直接表示您可以存储成千上万种作者未直接选择的颜色

BMP-无损/索引和直接

这是一种旧格式。它是无损的(保存时不会丢失图像数据),但是压缩几乎没有或根本没有压缩,这意味着保存为BMP会导致非常大的文件大小。它可以具有索引和直接的调色板,但这只是一个小安慰。文件大小过大,以至于没有人真正使用过这种格式。

优点:什么都没有。BMP并没有其他优势,或者没有其他格式可以做得更好。

BMP与GIF


GIF-无损/仅索引

GIF使用无损压缩,这意味着您可以一遍又一遍地保存图像,并且永远不会丢失任何数据。文件大小比BMP小得多,因为实际上使用了很好的压缩,但是它只能存储索引调色板。这意味着在大多数情况下,文件中最多只能包含256种不同的颜色。听起来确实很小,确实如此。

GIF图像也可以设置动画并具有透明度。

适用于:徽标,线条图和其他需要较小的简单图像。仅真正用于网站。

GIF和JPEG


JPEG-有损/直接

JPEG图像旨在通过消除人眼不会注意到的信息来使详细的摄影图像尽可能小。结果,这是一种有损格式,一遍又一遍地保存相同的文件将导致随着时间的流逝丢失更多的数据。它具有数千种颜色的调色板,因此非常适合照片使用,但是有损压缩意味着它对徽标和线条图不利:与GIF相比,它们不仅看起来模糊,而且图像文件大小也更大!

擅长:照片。还有,渐变。

JPEG与GIF


PNG-8-无损/索引

PNG是一种较新的格式,PNG-8(PNG的索引版本)确实是GIF的良好替代品。但是,令人遗憾的是,它有一些缺点:首先,它不能像GIF那样支持动画(可以,但是,Firefox似乎支持它,这不同于每个浏览器都支持的GIF动画)。其次,它与IE6等旧版浏览器存在一些支持问题。第三,像Photoshop这样的重要软件对该格式的实现非常差。(该死,Adobe!)PNG-8只能存储256种颜色,如GIF。

优点:PNG-8比GIF更好的主要功能是支持Alpha Transparency。

PNG-8和GIF

重要说明: Photoshop不支持PNG-8文件的Alpha透明度。(该死,Photoshop!)虽然有一些方法可以将Photoshop PNG-24转换为PNG-8,同时又保持其透明度。一种方法是PNGQuant,另一种方法是使用Fireworks保存文件。


PNG-24-无损/直接

PNG-24是一种出色的格式,将无损编码与直接颜色(数千种颜色,如JPEG)结合在一起。在这方面,它与BMP非常相似,只是PNG实际上会压缩图像,因此生成的文件要小得多。不幸的是,PNG-24文件仍然比JPEG,GIF和PNG-8大得多,因此您仍然需要考虑是否要使用一个。

尽管PNG-24在压缩时允许成千上万种颜色,但它们并不是要替换JPEG图像。另存为PNG-24的照片可能会比同等JPEG图像大至少5倍,而可见质量几乎没有改善。(当然,如果您不关心文件大小,并希望获得最佳质量的图像,则这可能是理想的结果。)

就像PNG-8一样,PNG-24也支持alpha透明性。


SVG-无损/矢量

SVG是目前越来越流行的文件类型,它与上述所有文件的不同之处在于它是矢量文件格式(以上均为raster)。这意味着它实际上是由直线和曲线而不是像素组成的。放大矢量图像时,仍然会看到曲线或直线。放大光栅图像时,将看到像素。

例如:

PNG和SVG

SVG和PNG

这意味着SVG非常适合您希望在Retina屏幕或其他尺寸上保持清晰度的徽标和图标。

此外,SVG文件是使用XML编写的,因此可以在文本编辑器中打开和编辑,如果需要,可以即时对其进行操作。例如,您可以使用JavaScript来更改网站上SVG图标的颜色,就像您要输入一些文本一样(即不需要第二张图片)。

希望对您有所帮助!


很好的例证。当心由压缩引起的伪影。我认为JPEG像视频压缩格式一样,存在一个问题,即纯红色区域趋向于在边缘“出血”。
James P.

1
您对PNG不支持动画是错误的。PNG可以很好地完成此操作,大多数查看器和浏览器都不支持它。en.wikipedia.org/wiki/APNG Firefox似乎很好地支持了它。people.mozilla.com/~dolske/apng/demo.html
Rob

1
@DjangoReinhardt我知道您在回答中包含了一个示例,但是就SVG与PNG而言,在什么情况下我们可能会看到更大的SVG(文件大小)与PNG?
Hanna 2015年

1
@约翰内斯很好的问题。SVG有一些缺点,特别是如果它们特别复杂(或保存不当-但这是作者的错,而不是文件格式的错)。我会尝试添加一些可以解决此问题的方法-尽管我怀疑SVG总是会比PNG小(或大小相等)。
Django Reinhardt

1
另一个有趣的事实:压缩后,BMP文件的大小类似于PNG。
jiggunjer 2015年

28

现有的答案仅包含很少的技术数据,因此在此将其包括在内。

  • JPEG:最高24位彩色(可能更多吗?),可变(通常为高压缩),有损,不支持alpha
  • PNG:高达48位彩色,中等压缩,无损,alpha支持
  • BMP:高达24位彩色,压缩极少,无损,支持alpha
  • GIF:最多8位彩色,很少压缩,无损,透明性支持,动画支持

颜色深度

  • 8位彩色== 256色
  • 24位颜色== 16,777,216种颜色
  • 48位颜色== 281,474,976,710,656颜色

大多数计算机监视器以24位色深运行。人眼可以分辨出那么多种颜色。额外的色彩深度主要是为了能够保留来自传感器的信息,以便对照片进行操作可以处理更多的数据。尝试以8位色表示照片会导致颗粒感。

压缩

这基本上是指最终文件的大小。更多的压缩等于更小的文件。但是,JPEG通过丢弃数据来获得较小的文件大小。这被称为“有损”压缩,因为您永远无法取回原始的未压缩数据。它的压缩也针对不常见高对比度边缘的照片进行了优化。如其他答案所述,除了照片以外,这是一个不好的选择。

Alpha /透明度

Alpha是指透明度,但它意味着存在多个级别的透明度。GIF可以定义透明像素,但是它是不透明或100%透明的,“透明”被用作256色之一。PNG和BMP能够将每个像素标记为不透明,透明或部分透明,就像一块彩色玻璃一样。虽然PNG实际上最多可以有65,536个级别,但最常见的透明度是256个级别。JPEG不支持透明度。

动画

实际上,在这些格式中,只有GIF支持动画。有使用PNG(MNG,APNG)和JPEG(MJPEG)的动画规范,但并未得到广泛支持。(APNG在Firefox和Opera的最新版本中可用。)实际上,您在网页上看到的大多数动画都是在Flash中实现的。


APNG获得了很多支持。
Phoshi

果然。我没注意到。
wfaulk

好吧,大多数现代浏览器都支持它,但鲜为人知。IE8不支持它,我不认为(但可以将其读取为PNG,因此显示第一帧)
Phoshi

伟大的思想处理..
InfantPro'Aravind'09/

25
  • 如果图像的颜色很少(如图标),请使用GIF。也可以用于动画图像(例如广告横幅)。
  • 如果图像有多种颜色(如照片),请使用JPG。JPEG是一回事。
  • 如果要保存图像而不进行压缩,请使用BMP。更大的文件大小!
  • 如果要在网络上发布图像并使用最新标准,请使用PNG。优点:适合作为GIF和JPG的现代替代品,并且是开放标准,并具有透明度。缺点:旧软件不支持,并且文件大小可能大于类似的GIF或JPG。

3
对于何时使用每种的实际考虑,+ 1。
Andrew Coleson,2009年

4
使用PNG时要小心。作为无损格式,由于文件大小,它们通常不适合照片等。绝对不是所有目的的“现代替代品”。从JPG到PNG的转码真的很愚蠢。
Paul McMillan,2009年

@Paul-我同意,它对所有用途当然都没有用,尤其是对照片而言,并不是很有用,但是当用于网络图形时,它确实可以代替JPG。
2009年

2
我认为现在不需要BPM。
Arjan

1
PNG几乎总是小于GIF。它具有出色的压缩方案。当它大于外观相同的GIF时,通常是糟糕的软件(例如CS2之前的Photoshop)造成的。使用调色板(不是24位!)PNG,并使用PNG优化器来修复它们:imageoptim.pornel.net,您将再也不想在GIF上浪费带宽了。
Kornel

13

在此处输入图片说明


BMP:

  • 旧格式。没有数据丢失。
  • 未压缩-存储每个像素的值。因此,相同尺寸的图片具有相同的文件大小(千字节/兆字节)。例如,800×600 BMP图像始终为1.37 MiB,就像流行的WinXP壁纸“ Bliss”起伏的丘陵。
  • 不支持透明/半透明
  • 不推荐任何东西

JPG:

  • 有损压缩。
  • 可以设置损失金额,例如,在Photoshop中创建图形并保存时。
  • 保存为更高质量意味着更少的颜色/深度损失和高文件大小,反之亦然。
  • 不支持透明/半透明
  • 建议用于照片,而不用于图形/图标

PNG:

  • 无损压缩(是的,这是两个单词/世界中最好的)
  • 支持透明和半透明,两者都不相同
  • 建议用于静态图形/图标,而不用于照片

GIF:

  • 支持透明性但不透明
  • 仅建议用于动画图形/图标
  • 也许哈利·波特帧中的动态照片是GIF:D

1
不错的概述。但是,为什么在表中BMP被标记为“ lossless:false”?您在文本中正确指出恕我直言,BMP确实是无损的
mpy

2
我知道这是一个旧线程,感谢您的回答,但是请注意,可以选择使用非常简单,无损的RLE压缩来压缩BMP。
ysap 2015年

除了与JPEG相比更大的文件大小以外,为什么不建议在照片中不建议使用PNG的其他原因?我先以JPEG格式扫描旧照片,然后在意识到我正在扫描以有损格式存储的照片后,再以PNG对其进行重新扫描。
JAT86 '18年


3

简单的GUID:

  • 对于照片,请使用:
    • 相机专用的原始格式(如果您拥有专业的设备并且想要进行大量的后处理)
    • 否则为JPEG(要在网络上发布照片,您还必须将原始格式也转换为JPEG)
  • 对于边缘锐利,线条细,颜色少的东西(例如屏幕截图或徽标),请使用:
    • 如果您要制作的网页必须支持非常旧的浏览器(主要是IE 6),或者您要制作简单的动画,则为GIF
    • 否则为PNG
  • 除非特定程序不接受其他格式,否则没有充分的理由使用BMP。

1
IE从4.x版本开始支持PNG(在Mac上为5),但不是透明的PNG。
Arjan

1
如果IE6具有类似GIF的透明度,则实际上甚至支持透明PNG。不支持带有完整Alpha的PNG。
Kornel

1
如果是8位PNG,则实际上支持Alpha Transparency。很奇怪,但事实如此。
Django Reinhardt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.