我已经使用 ImageIO 将 Java 内部 ImageFetcher 替换为自己的实现。我们软件的一些使用这些图像的图像渲染器现在绘制抗锯齿缩放图像而不是非抗锯齿图像。唯一的变化是图像的来源,现在是 BufferedImages 而不是 Toolkit-Images。
现在的问题是,区别在哪里?哪个属性导致图像缩放抗锯齿?我一直认为抗锯齿键只取决于我绘制的图形——但这显然是错误的。
顺便说一句:不幸的是,我无法更改渲染器。
我已经使用 ImageIO 将 Java 内部 ImageFetcher 替换为自己的实现。我们软件的一些使用这些图像的图像渲染器现在绘制抗锯齿缩放图像而不是非抗锯齿图像。唯一的变化是图像的来源,现在是 BufferedImages 而不是 Toolkit-Images。
现在的问题是,区别在哪里?哪个属性导致图像缩放抗锯齿?我一直认为抗锯齿键只取决于我绘制的图形——但这显然是错误的。
顺便说一句:不幸的是,我无法更改渲染器。
如果 ImageIO.read 进行任何抗锯齿处理,则可能是特定于平台的问题,正如@Ichorus 指出的那样,因为 ImageIO.read 没有指定任何有关缩放或抗锯齿的预期行为的内容。
在发出 g.drawImage 或类似内容之前,您可能会尝试摆弄您的 Graphics2D 上下文的渲染提示。
http://bit.ly/7b6lvg <--关于 Graphics2D.setRenderingHint 的 Java Sun 文档
好吧,毕竟有一个重要的区别:BufferedImages 是 RenderedImages,ToolkitImages 不是。在某些情况下,这可能会导致不一致的行为,但通常似乎不是 Java 问题。