2

此外,就带宽而言,哪种方法(jpeg、png、gif)最适合压缩?

4

3 回答 3

5

使用什么格式:

  • JPG/JPEG是有损压缩 - 你会丢失细节。(质量水平可控,有帮助)
  • GIF是无损压缩,但它转换为 8 位色彩空间会扭曲许多图像,尤其是自然图像。
  • PNG是无损压缩。

除非您有令人信服的理由不使用 PNG,否则我会推荐它。更多细节

对于相同的图像,但使用不同的格式,图像质量通常与图像大小大致成反比。我建议使用 PNG,如果您的 PNG 太大,请使用 JPEG。PNG还具有支持透明度的好处。

GIF 真的只适用于小型计算机生成的图像,如图标或排版。上面的链接还包含图像大小比较。

与往常一样,最好的测试是为您的应用程序全部尝试并进行比较;但是,对于大多数此类分析的返回值最小的情况,PNG 是合理的默认值。

创建 JPEG、PNG 或 GIF:

就实际从 Java 创建 JPEG、PNG 或 GIF 而言BufferedImage。查看来自 Sun/Oracle的本教程。有很多内容可以帮助您,最后一节明确介绍了创建 JPEG、PNG 和 GIF。这是来自上述链接教程的修改后的片段:

try {
    BufferedImage bufImg = getBufferedImage(); //get BufferedImage from your code...
    File fout = new File("saved.png");
    ImageIO.write(bufImg, "png", fout);
} catch (IOException e) {
    //handle exception...
}
于 2013-02-07T18:04:05.937 回答
2

压缩由各种文件格式本身(JPEG、PNG、GIF 等)处理。

“带宽最佳”是一个完全主观的问题,取决于图像本身的大小和内容。

例如,具有少量颜色和很少“平滑”(例如像素图形)的小图像在 PNG 和 GIF 格式中表现良好。具有多种颜色和大量平滑的较大图像(例如照片)在使用JPEG时会做得更好,并且使用这种格式,您还可以在编码期间控制压缩/质量。

于 2013-02-07T18:03:41.840 回答
1

JPEG 最有可能。它是默认的 75% 压缩,但质量欠佳。

如果你想要质量:使用 png。你会得到透明度,这是 jpg 不支持的。png 的质量也被列为 100%。如果您想要质量好但文件大小较小的文件,您始终可以使用 png 并使用压缩类型,类似于文件的 base-64。然后只需解压缩并存储图像。它将使用低内存量来存储图像,但可以让您有效地保持质量不变。

于 2013-02-07T18:03:04.913 回答