锐化Java小程序中的图像

时间:2010-05-28 19:57:09

标签: java image rendering

我有一个扫描图像,我正在java applet中查看。图像采用jpeg格式。当我在Internet Explorer中查看相同的图像时,它看起来更清晰。我想让我的应用程序中的图像质量与我在IE中看到的一样清晰。关于如何锐化在java中呈现的图像的任何想法?

谢谢,

埃利奥特

2 个答案:

答案 0 :(得分:2)

我非常怀疑IE会主动锐化图像,所以可能正在发生的事情是你在applet中显示图像的方式会降低质量(可能会缩小它)。你能发一些代码吗?

答案 1 :(得分:0)

考虑到这是扫描图像,我假设它的文档很可能包含文本。我相信IE默认使用bilinear sampling算法来缩放图像,这可能会为这些类型的图像产生更好的结果。在任何情况下,您需要在渲染图像时修改缩放算法以确保正确的质量。

这是一个简单的例子,显示将缩放算法设置为双线性,这可能会或可能不会给你正确的结果,我会继续尝试不同的算法,直到你得到正确的结果。 (参见RenderingHints并查找以“VALUE_INTERPOLATION _...”开头的设置。)

private float xScaleFactor,yScaleFactor = ...;     private BufferedImage originalImage = ...;

public void paintComponent(Graphics g) {
    Graphics2D g2 = (Graphics2D)g;
    int newW = (int)(originalImage.getWidth() * xScaleFactor);
    int newH = (int)(originalImage.getHeight() * yScaleFactor);
    g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
                        RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    g2.drawImage(originalImage, 0, 0, newW, newH, null);
}

另请查看此article,了解各种性能问题,并确保一切运行正常。