我有一个扫描图像,我正在java applet中查看。图像采用jpeg格式。当我在Internet Explorer中查看相同的图像时,它看起来更清晰。我想让我的应用程序中的图像质量与我在IE中看到的一样清晰。关于如何锐化在java中呈现的图像的任何想法?
谢谢,
埃利奥特
答案 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,了解各种性能问题,并确保一切运行正常。