代码之家  ›  专栏  ›  技术社区  ›  Mohd Shibli

压缩图像文件格式(jpeg、PNG、gif)的原始形式是什么?

  •  0
  • Mohd Shibli  · 技术社区  · 7 年前

    正如我们所知,jpeg、PNG、gif都是压缩文件格式,我的问题是,我们为这些压缩算法提供的原始输入源是什么,在将图像数据转换为其中一种文件格式之前,它以何种形式存储。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Geoduck    7 年前

    那要看情况而定。

    PNG通常是无损的,但它对位/像素的数量有限制。GIF也被证明是无损的,但获得大量颜色更为复杂。这些格式仍然是压缩的,但使用的压缩不会丢失数据。

    还有其他图像格式,如TIFF、RAW和BMP,通常不会进行任何压缩,尽管它们实际上更像容器,从技术上讲可以包含压缩数据,但通常不会。

    原始的未压缩数据取决于生成它的内容。photoshop文件将另存为PSD,但内部可能在内存中以不同的方式表示。每个数码相机可能有不同的内部内存布局方式,光传感器往往会从传感器1到1映射到一组位的内存位置。

    然而,常见的模式是,图像的每个像素存储为3(有时为4)个颜色值,每个值在8到16位之间。这3个值可以表示红色、绿色和蓝色,或者表示色调、饱和度和值。对于设计,它可以是CMYK(青色、洋红、黄色和黑色)。也可能有alpha值。每个颜色通道使用超过16位是不常见的,最常见的是使用8位。大多数人认为使用12位是全色的,但在32位甚至64位机器上,这并不能很好地对齐。尽管如此,12位有时用于数字视频信号,因为当连续广播时,颜色值不需要放入文字中。

    不同的格式将以不同的顺序进行。通常先行,但有些格式从底部行开始,有些从顶部开始。

    所以,真正的答案是,这取决于特定压缩机在寻找什么。大多数保存为JPEG或PNG的软件将接受多种格式,最常见的可能是32位/像素,每个RGB(红色、绿色、蓝色)有8个字节,其中一个是未使用的或alpha。它需要图像的宽度和高度,因此图像数据应为宽度*高度*4字节。通常传入一个定义的常数,告诉它字节顺序:RBGA、ARGB、BGR、RGB等。