此外,就带宽而言,哪种方法(jpeg、png、gif)最适合压缩?
3 回答
使用什么格式:
除非您有令人信服的理由不使用 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...
}
压缩由各种文件格式本身(JPEG、PNG、GIF 等)处理。
“带宽最佳”是一个完全主观的问题,取决于图像本身的大小和内容。
例如,具有少量颜色和很少“平滑”(例如像素图形)的小图像在 PNG 和 GIF 格式中表现良好。具有多种颜色和大量平滑的较大图像(例如照片)在使用JPEG时会做得更好,并且使用这种格式,您还可以在编码期间控制压缩/质量。
JPEG 最有可能。它是默认的 75% 压缩,但质量欠佳。
如果你想要质量:使用 png。你会得到透明度,这是 jpg 不支持的。png 的质量也被列为 100%。如果您想要质量好但文件大小较小的文件,您始终可以使用 png 并使用压缩类型,类似于文件的 base-64。然后只需解压缩并存储图像。它将使用低内存量来存储图像,但可以让您有效地保持质量不变。