如何在java中优化图像以提高性能

时间:2009-07-05 10:30:46

标签: java image optimization

im transeffing image throw tcp / ip我喜欢优化它,并且尽可能保持良好的质量 我可以使用哪种方法或算法? P.S 现在,如果我考虑一下,也许我应该问什么是最好的和快速的发送图像的方式 通过tcp / ip

4 个答案:

答案 0 :(得分:2)

要找到问题的正确答案,您需要查看图片本身。他们是在相机上拍摄的真实世界图像吗?或者它们是合成图像,如图标或图形?

有损压缩(如JPEG)对于具有许多渐变和平滑边缘的真实场景非常有效。对于具有纯色和硬边的图像,与无损压缩相比,图像质量损失更高(甚至感知到),压缩率增益更低。

基本上,您所建立的图片格式为 PNG (可移植网络图形)和 JPEG 。 PNG图像总是压缩无损,但它们的压缩算法比竞争对手更好,即GIF。如果图像非常适合,则获得与JPEG相当的压缩率,如果不是(如真实世界图像),则可获得典型的ZIP压缩率(约50%)。

在确定有损/无损压缩(或组合,基于图片类型 - 您还可以考虑先在两种格式中压缩图像然后进行比较,如果处理时间与网络吞吐量无关),您应该还可以利用渐进式编码,JPEG和PNG格式都支持这种编码。 使用渐进式编码,基本上数据的组织方式使得接收的数据越多,质量越好(除了逐行发送图像之外)。这里的优点是您可以在仍然收到图像时向用户显示图像。但是,为此您需要一个公开此功能的解码器。

我不知道Java中可用的库。

答案 1 :(得分:1)

您应该检查Java Advanced Imaging API

但要有效地使用它,您需要了解哪种类型的图像操作适合您的问题。除其他外,这将取决于源图像的编码。

至于“尽可能高质量”,您很可能需要尝试各种压缩技术及其相关参数,然后才能决定哪一种能够根据您的需求在速度,尺寸和质量之间取得适当的平衡。

答案 2 :(得分:0)

您可以查看this。它是常见压缩算法(质量和压缩率)之间的比较。

编辑:它不是直接java,但你可能会找到所需算法的实现。

答案 3 :(得分:0)

对于用于人类观看的图像,JPEG非常好。什么是远程端?浏览器?