如何在不损失质量的情况下减少BufferedImage大小

时间:2013-09-12 10:19:32

标签: java image performance image-processing

由于我正在处理图像并提高应用程序的性能,因此需要在不降低质量的情况下缩小图像数据的大小。

例如: 如果原始缓冲图像   大小是50kb,   尺寸1024 * 768 申请减少alog后:    尺寸是< 30KB,    尺寸1024 * 768,质量与原始图像相同。

请您告诉我如何在不降低质量的情况下减少缓冲图像。

谢谢&问候 迷你。

2 个答案:

答案 0 :(得分:1)

除了可用的标准无压缩按压之外,我想,你做不了多少。

但: 你使用什么颜色深度?是否真的有必要,图像是24位?有非常好的抖动算法,它会将颜色深度减少到颜色调色板。通常你可以取得很好的效果。这肯定取决于您获得的图像作为来源以及客户期望的结果。

答案 1 :(得分:1)

您需要定义您的质量度量:-)即使图像数据略有变化,图像也可能以人类观察者看不到任何质量损失的方式进行压缩。这是有损压缩。在无损压缩中,您将能够为位重建原始数据位。

无损压缩

通过“智能地重新打包数据”来工作。这里的经典算法是Huffman CodingRun-Length Coding.png格式或某些版本的.tiff无损存储图像。

不幸的是,无损编码可以做多少是有限的:数据带有一定数量的信息,这会对文件的小小产生一个下限。

有损压缩

通过将数据重新排序为“重要”和“不重要”部分,并删除不重要的部分。此重新排序的示例包括Vector QuantizationDiscrete Cosine Transform。有损图像压缩最流行的格式是.jpeg

在有损压缩中,文件大小的小小没有严格的下限。然而,存在人类观察者开始看到压缩伪像的阈值。尽管如此,对于许多图像类型而言,有损算法比无损算法的文件大小更小,但质量没有明显下降。