代码之家  ›  专栏  ›  技术社区  ›  stevendesu

JPEG:尺寸与压缩

  •  3
  • stevendesu  · 技术社区  · 14 年前

    很简单但很具体的问题:

    我不完全熟悉JPEG压缩图像的标准。当X维(宽度)非常大,Y维(高度)非常小,反之亦然,或者当两者几乎相等时,它是否会创建更好的(也就是说,在相同的质量下更小的文件大小)图像?

    我的实际用途是CSS精灵。如果一个网站是由数百个CSS精灵组成的,那么最好是最小化精灵文件的大小,以帮助用户在较慢的internet上运行,并减少服务器负载。如果JPEG标准在一个水平线上运行得很好,但是垂直移动需要更多的复杂性,对于100个16x16 CSS精灵的图像来说是有意义的1600×16。

    另一方面,如果JPEG标准有许多复杂的水平工作,但是很容易从一行移动到另一行,可以通过生成16x1600图像来生成更小的文件或更高的质量。

    如果最好的压缩发生在图像是一个完美的正方形时,您会希望最终图像是160x160

    2 回复  |  直到 14 年前
        1
  •  4
  •   Flipster    14 年前

    MPEG/JPEG分块机制(非常轻微地)倾向于图像大小是压缩块大小在每个维度上的精确倍数。但是,除此之外,格式不关心块是垂直的还是水平的。

    所以,你的问题的直接答案是“正方形和任何东西都一样好”,只要你的精灵很容易被分割成JPEG压缩块(只要确保它们是8、16、24或32像素宽,你就没事了)。

    不过,我会更进一步地说,对于“大多数”喷口,你会有一个更小的图像大小,更清晰的分辨率,如果你有一个初始的主图像是GIF而不是JPG,如果你可以使用一个缩小的调色板。想一想为什么你需要“数百个精灵”的JPG。

        2
  •  4
  •   jamesbtate    14 年前

    看起来JPEG的压缩比不受图像尺寸的影响。然而,看起来你的维度应该是8的倍数,但是在所有的例子中你都是16的倍数,所以你应该在那里很好。

    http://en.wikipedia.org/wiki/JPEG#JPEG_codec_example

    如果我没记错的话,当同一颜色出现在水平拉伸而不是垂直拉伸时,PNG(无损)的效果会更好。你为什么要让你的精灵JPEG?如果它们是一个有限的颜色集(这可能是如果你有16x16精灵,动画或没有),PNG实际上可能会产生更好的文件与完美的图像质量。