ImageIO读取是否意味着消除锯齿缩放?

问题描述:

我用自己的ImageIO替换了Java内部ImageFetcher。我们的软件的一些图像渲染器使用这些图像,现在绘制反锯齿缩放图像而不是非反锯齿。唯一的变化是图像的来源,现在是BufferedImages而不是Toolkit-Images。ImageIO读取是否意味着消除锯齿缩放?

现在的问题是,区别在哪里?哪个属性导致图像缩放反锯齿?我一直认为反锯齿键只取决于我画的图形 - 但这显然是错误的。对不起,我不能改变渲染器。

+0

你能不能给我们上的图像渲染器运行在不同的平台和观察到的行为细节?这可能会对发现正在发生的事情有很大的帮助。例如,Macs的Java2d实现依赖于Quartz 2d,这可能会导致Sun的实现发生重大变化。 – Ichorus 2009-12-18 02:51:39

好的,毕竟有一个重要的区别:BufferedImages是RenderedImages,ToolkitImages不是。这可能会在某些情况下导致行为不一致,但通常不会成为Java问题。

如果ImageIO.read做任何反锯齿,它可能是一个特定于平台的问题,正如@Ichorus指出的那样,因为ImageIO.read没有指定任何关于缩放或反锯齿的预期行为。

在发出g.drawImage或类似命令之前,您可能会尝试处理的是Graphics2D上下文的渲染提示。

http://bit.ly/7b6lvg < - 上Graphics2D.setRenderingHint

的Java Sun文档