PNG,GIF,JPEG,SVG有哪些不同的用例?


575

建立网站或界面等时应何时使用某些图像文件类型?

他们的优点和缺点是什么?

我知道PNG和GIF无损,而JPEG有损。
但是PNG和GIF之间的主要区别是什么?
为什么我要一个比另一个更好?什么是SVG?何时使用?

如果您不关心每个像素,是否应该始终使用JPEG,因为它是“最轻”的像素?

Answers:


1400

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

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

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

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

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

BMP-无损/索引和直接

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

优点:什么都没有。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


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徽标可以以更大(更大)的尺寸使用而不会降低图像质量-某些情况下,这需要单独使用光栅格式的更大(就文件大小而言)文件。

SVG文件的大小通常很小,即使它们在视觉上非常大,这也很棒。值得记住的是,它确实取决于所使用形状的复杂性。SVG比栅格图像需要更多的计算能力,因为绘制曲线和线涉及数学计算。如果徽标特别复杂,则可能会减慢用户计算机的速度,甚至会导致文件很大。重要的是要尽可能简化矢量形状。

此外,SVG文件是用XML编写的,因此可以在文本编辑器(!)中打开和编辑。这意味着可以随时操纵其值。例如,您可以使用JavaScript来更改网站上SVG图标的颜色,就像您要输入一些文本(即不需要第二张图像),甚至对其进行动画处理一样。

总之,它们最适合徽标或图形之类的简单平面形状。

希望对您有所帮助!


24
极好的答案。您可能还想添加JPEG也可以是无损的(尽管大多数使用有损变体)。
ypercubeᵀᴹ

@porneL不错!不过,在保存文件之前,这似乎是一种过滤不必要的细节的技巧。因此,例如,如果您再次保存文件,则不会丢失任何其他数据(与JPG不同)。那正确吗?
Chuck Le Butt

1
@DjangoReinhardt当您重新保存图像时,过滤器hack会带来更多损失。但是,我认为这不是对有损格式或编码器的一个很好的定义,AFAIK JPEG的DCT是可逆的,因此好的编码器可以重新保存JPEG而不会造成进一步的损失。
Kornel

2
@sudo不,从处理的角度来看,BMP肯定很容易解码,但是除非将其存储在本地SSD上,否则我认为将文件传送到CPU进行处理要比仅处理JPG慢,尤其是在正确处理-书面JPG解码器,它使用已经使用了十年或两年的硬件指令。
卡米洛·马丁

1
@PirateApp编辑为希望能解决您的问题
Chuck Le Butt

47

JPEG不是所有类型(甚至大多数)图像中最轻的。拐角和直线以及纯色的“填充”(纯色块)将视模糊程度而变模糊或出现伪影。这是一种有损格式,最适合无法清晰看到伪影的照片。直线(例如在绘图和漫画中)在PNG中非常好地压缩,并且无损。仅当您希望透明度在IE6中工作或希望动画时才应使用GIF。GIF仅支持256色调色板,但也无损。

因此,基本上,这是一种决定图像格式的方法:

  • 如果需要在IE6上可以使用动画或透明度的图片,则为GIF(请注意,PNG透明度在IE6之后可以使用)
  • 如果图像是照片,则为JPEG。
  • 如果是漫画或其他图形中的直线,或者需要宽的颜色范围且具有透明度(而IE6不在考虑范围之内),则为PNG

而且如前所述,如果您不确定该选择哪种格式,请尝试使用不同压缩率的每种格式,然后权衡图片的质量和尺寸,然后选择您认为最合适的格式。我只是给出经验法则。


3
很好的答案,但我想补充以下内容:如果不确定,请尝试每一项,看看图片的外观和文件的大小。
杰西·维格

看,最后您找到了问题并给出了一个很好的答案。谢谢。我不了解IE6的透明性问题,您需要考虑很多事情。
法鲁兹

GIF已经过时了,我什么都不推荐。对于动画,有许多现代方法(视频,Flash,JavaScript + SVG)。在IE 5.5之前,PNG透明度也可以(不完美,但等于GIF)起作用。
Tronic

IE 5.5和6实际上支持与GIF相同的8位PNG透明度,只是不支持24位PNG的alpha通道透明度。
格雷厄姆·康泽特

1
@Tronic,的确如此,但这并不“容易”
Earlz 2010年

7

我通常会使用PNG,因为它似乎比GIF有一些优势。GIF曾经有专利限制,但是这些限制已经过期。

GIF适用于颜色数量有限的锐利线条艺术(例如徽标)。这充分利用了格式的无损压缩功能,该功能有利于边缘清晰的均匀颜色的平坦区域(而JPEG则有利于平滑渐变和柔和图像)。

GIF可以用于小型动画和低分辨率影片剪辑。

鉴于GIF图像调色板的一般限制为256色,因此通常不将其用作数字摄影的格式。数码摄影师使用能够再现更大范围色彩的图像文件格式,例如TIFF,RAW或有损JPEG,它更适合于压缩照片。

PNG格式是GIF图像的一种流行替代方法,因为它使用了更好的压缩技术,并且没有256种颜色的限制,但是PNG不支持动画。均源自PNG的MNG和APNG格式支持动画,但并未得到广泛使用。


3
PNG还支持Alpha透明度,这对于Web图形非常重要。
Tronic

5

JPEG在锋利的边缘等周围的质量会很差,因此,它不适用于大多数Web图形。它在照片方面表现出色。

与GIF相比,PNG提供更好的压缩效果,更大的调色板和更多功能,包括透明度。而且它是无损的。


5

GIF仅限256种颜色,不支持真实的透明度。您应该使用PNG而不是GIF,因为它提供了更好的压缩和功能。PNG非常适合小而简单的图像,例如徽标,图标等。

JPEG对照片等复杂图像具有更好的压缩效果。


4

可以使用GIF图像显示真实色彩的方法是可行的。一个人可以准备一个GIF动画,该动画具有256个具有0帧延迟的调色板帧,并将动画设置为仅显示一次。因此,所有帧可以同时显示。最后,呈现了一个真彩色的GIF图像。

许多软件都可以处理此类GIF图像。但是,输出文件的大小大于PNG文件。如果确实需要,则必须使用它。


3

png的颜色调色板比gif宽,而gif是适当的,而png则不是。gif可以动画,而normal-png不能。仅比IE6更新的浏览器才支持png透明性,但是针对该问题有Javascript修复程序。两者都支持Alpha透明度。通常,我会说大多数网页图形都应使用png,而将jpeg用于照片,屏幕截图或类似图片时应使用png,因为png压缩不适用于thoose。


3

GIF基于每个图像256色的调色板(至少在其基本形式上)。PNG可以做“ TrueColour”,即开箱即用的1670万种颜色。无损PNG压缩比无损GIF更好。GIF可以执行“二进制”透明度(0%不透明度或100%不透明度)。PNG可以处理Alpha透明胶片。

总而言之,如果您不需要使用Alpha透明图像并支持IE6,则当您需要用于矢量插图等像素完美图像时,PNG可能是更好的选择。JPG在照片方面无与伦比。


3

截至2018年,我们有几种新格式,对以前格式的更好支持以及一些使用视频而不是图像的巧妙技巧。

对于照片

jpg -仍然是最广泛支持的图像格式。

webp- 来自Google的新格式。潜力很大,尽管浏览器支持不是很好。

用于图标和图形

svg- 只要有可能。它可以在视网膜屏幕上很好地缩放,可以在文本编辑器中编辑,并且可以在加载到DOM中时通过JS / CSS进行自定义。

png-如果涉及光栅图形(即在Photoshop中创建)。支持透明性,这在此用例中非常重要。

对于动画

svg-加上用于矢量图形的CSS动画。SVG的所有优势+ CSS动画的强大功能。

gif -仍然是最广泛支持的动画图像格式。

mp4-如果动画图像实际上是短视频剪辑。Twitter / Whatsapp将gif转换为mp4。

apng-不错的浏览器支持(即没有IE,Edge),但是创建它并不像gif那样简单。

webp-接近使用mp4。支持

这是各种动画图像格式的很好的比较

最后,无论哪种格式,都要确保对其进行优化-每种格式都有工具(例如SVGO,Guetzli,OptiPNG等),可以节省大量带宽。


1

主要区别在于GIF已获得专利并得到了更广泛的支持。PNG是一个开放规范,IE6不支持alpha透明性。IE7中的支持得到了改进,但并未完全修复。

就文件大小而言,GIF具有较小的默认颜色托盘,因此乍一看它们倾向于较小的文件大小。PNG文件具有更大的默认纸盘,但是您可以缩小其颜色纸盘,以便在这样做时产生的文件尺寸比GIF小。再次出现的问题是Internet Explorer不支持此功能。

另外,由于PNG可以支持alpha透明度,因此,如果您要更改除二进制透明度之外的其他透明度,则它们是唯一的选择。


1

如果您选择JPEG,并且正在处理网站的图像,则可能需要考虑免费使用Google Guetzli感知编码器。以我的经验,在保持固定质量与JPEG标准完全兼容的情况下,Guetzli会生成比标准JPEG编码库小的文件,同时保持与JPEG标准的完全兼容性(因此,您的图像将具有与普通JPEG图像相同的兼容性)。

唯一的缺点是Guetzli需要花费大量时间进行编码..但是,当您为网站准备图像时,只完成一次,而好处永远存在!较小的图像将花费较少的时间下载,因此您的网站速度在日常使用中将提高。



0

正如@aarjithn指出的那样,WebP是用于存储照片的编解码器。

这也是用于存储动画(动画图像序列)的编解码器。截至2020年,大多数主流浏览器均已提供对它的即装即用支持(兼容性表)。对于WIC,请注意有可用的插件

它比GIF更具优势,因为它基于视频编解码器VP8,并且具有比GIF更大的颜色范围,在GIF中,GIF限制为256色,因此可以将其扩展为2 24 = 16777216色,仍然节省了大量空间。

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.