Java - 如何压缩 BufferedImage?

标签 java compression bufferedimage

<分区>

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

最佳答案

使用什么格式:

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

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

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

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

一如既往,最好的测试是针对您的应用程序尝试所有这些并进行比较;但是,对于此类分析的返回值极小的大多数情况,PNG 是合理的默认值。

创建 JPEG、PNG 或 GIF:

就实际从 Java BufferedImage 创建 JPEG、PNG 或 GIF 而言。查看this tutorial来自太阳/甲骨文。有很多内容可以帮助您,last section明确解决了创建 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...
}

关于Java - 如何压缩 BufferedImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14757775/

相关文章:

java - 如何使用 selenium 测试下拉菜单中的项目是否按字母顺序排序

java - 使用 xuggler 从一组图像创建视频

java - 如果我已经添加了 Maven 依赖项,我缺少什么能够导入 io.netty.handler.ssl.util.* ?

java - 将多个 BufferedImages 叠加在一起?

java - 如何从同一类的另一个对象调用变量

python - 瘦身一个xml

algorithm - 无需构建树即可预测霍夫曼压缩率

sql-server - .Net 压缩和 SQL Server 2005 NVARCHAR(MAX)

opencv - 寻找拼图的角落

java - 如何在 Java 中快速初始化 BufferedImage?