2010-05-28 75 views
1

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

感谢,

埃利奥特

回答

2

我严重怀疑IE积极锐化图像,所以可能发生的事情是你以这样的方式为,质量降低显示在你的小程序中的图像(可能缩放它)。你可以发布一些代码吗?

+0

事实证明,这是尼尔·科菲提出了一个简单的缩放problme。谢谢你指着我在正确的方向。 埃利奥特 – Elliott 2010-05-30 18:43:11

0

考虑到这是一个扫描图像,我认为它是一种最有可能包含文本的文档。我相信IE默认使用bilinear sampling算法来缩放图像,这可能会为这些图像产生更好的效果。无论如何,当您渲染图像时需要修改缩放算法以确保质量。

这里有一个简单的例子,说明设置缩放算法是双线性,这可能会或可能不会给你正确的结果,我会继续用不同的算法尝试,直到你得到正确的结果。 (见RenderingHints并查找设置以`VALUE_INTERPOLATION _...“)

私人浮动xScaleFactor,yScaleFactor = ...; 私人的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一些洞察各种性能的关注和使用,以确保一切运作良好。