除了@remco的绝妙答案之外,我还想补充一下为什么存在(大致)相同目的的不同编解码器。
编解码器旨在:
- 无损与有损
- 快速编码与减少文件大小
- 非对称与对称编码/解码
- 与软件兼容
- 在不同的压缩级别/情况下几乎无损
- 具有其他编解码器不提供的功能,包括:
- 免版税
- 支持图层
- 支持Alpha通道(例如RGBA)/透明度
- 提供快速的网络视图
- 支持较高的位深度
- 支持多种色彩空间(RGB / CMYK)
- 支持元数据/版本控制/ ...
其中一些是互斥的。因此,我们剩下了许多编解码器。
一些例子
注意:编解码器列表既不完整,也没有提及其所有功能(或缺少这些功能)。如果事实证明该答案对某人有用,那么我可能会添加更多信息(更加准确)。
也许最常用的格式是JPEG。它是一种得到广泛支持的旧格式。它使用DCT(离散余弦变换),因此虽然在其最高质量设置下提供了很好的质量,但较低的将出现阻塞。
然后JPEG 2000取代了JPEG:它基于Wavelet-Transformation,因此虽然在较高质量设置中提供与JPEG大致相同的质量,但是在较低质量设置中提供了更好的质量(块有点模糊) )。此外,JPEG 2000还提供了感兴趣的区域(图片某一区域的高质量,其他地方的质量较低)和16位支持。(此外,还有其他事情。)不幸的是,由于它比JPEG更加昂贵的计算,并且由于某些许可问题,因此JPEG 2000不像JPEG那样得到广泛的支持。
PNG是另一种广为人知的格式-无损且支持alpha通道,但不提供对非RGB颜色空间(如CMYK)的支持。因此,它是“仅在线”格式。
然后是像OpenEXR这样的VFX格式。它们都围绕质量和速度进行:OpenEXR是无损的,支持高达64位,并且可以快速地进行编码/解码。它主要在VFX行业中用作中间格式。
TIFF是另一种非常受摄影师欢迎的无损格式。对于压缩,它不提供/ ZIP / RLE / LZW / JPEG。它支持最高32bit。凭借其可选择的压缩,它具有很强的适应性,但是由于其无损的特性,它更像是一种离线格式。
HEIF是最新的图像编解码器之一。它使用与HEVC / h.265相同的压缩率,因此有望提供比JPEG更好的压缩率。但是,由于它是很新的并且因为它受专利保护,因此没有像上面任何一种方法得到广泛的支持。
RAW图像实际上也并非真实照片:它们更多地是原始(因此得名)传感器读数数据的容器。只有使用知道如何解释数据的软件,才能获取图片。这就是为什么诸如Lightroom / Capture One / DarkTable / ...之类的RAW转换器需要更新以支持使用已经指定的容器(例如Canon的* .CR2)的新相机的原因。这也是为什么14位RAW提供比从同一RAW导出的32位TIFF更多的编辑选项的原因。
互斥:无损与有损
我仍然不确定您真正要问的是什么,因此我认为添加关于无损与有损的小解释不会有什么害处。
无损压缩通过执行行程编码(RLE) / 霍夫曼编码 / ...来压缩数据。数据本身不会更改,而是保存在较小的程序包中。例如,以RLE为例:说说,我们的R通道比特流(从像素0,0
到像素0,11
)为255,255,255,255,255,215,215,235,100,000,000,000
-RLE会将其编码为52552215123511003000
-这要小得多,并且由于我们知道它以4位数字的形式保存,并且第一个数字是计数器,最后三个数字是值,那么我们可以重构full 255,255,255,255,255,215,215,235,100,000,000,000
。
另一方面,有损压缩会尝试进行比无损压缩更远的压缩。为此,有损编解码器通常会尝试删除我们无法感知的内容。举个例子来说,在YUV
(YCbCr
真的)模式的JPEG(和几乎所有的视频编解码器)用途:Y = Luminance
,Cb = Chrominance Blue
,Cr = Chrominance Red
。人无法分辨出4:2:0
(每个像素都有亮度值,但颜色交替保存在2x2的块中)和4:4:4
(每个像素都有亮度和两个颜色通道)编码图片之间的差异。这是由于眼睛的生理原因:我们看不到颜色差异,也看不到亮度差异。
在大多数情况下,这种方法效果很好,但是可以将其与MP3文件进行比较:几乎没有人可以分辨出192kbps和320kbps之间的差异,但低于64kbps时,情况很快就会变丑。同样,重新编码将进一步降低质量,因为可能会出现不需要的伪像(例如,在JPEG中,来自高质量编码的小块将被视为进一步编码中图片的细节)。
底线
如果您不关心图像格式或其功能,则可以选择其中任何一种。有了足够高的质量设置,您甚至有可能甚至看不到它们之间的差异。
但是,如果您需要任何特定功能,则可能(并且几乎可以肯定:将)有一个包含该内容的编解码器。