Java绘画速度相对于颜色模型

时间:2010-03-26 22:47:17

标签: java paint bufferedimage

我有一个带有IndexColorModel的BufferedImage。我需要将该图像绘制到屏幕上,但我注意到使用IndexColorModel时这很慢。但是,如果我通过身份仿射变换运行BufferedImage,它会创建一个带有DirectColorModel的图像,并且绘画速度要快得多。这是我正在使用的代码

AffineTransformOp identityOp = new AffineTransformOp(new AffineTransform(), AffineTransformOp.TYPE_BILINEAR);
displayImage = identityOp.filter(displayImage, null);

我有三个问题
1.为什么在IndexColorModel上绘画速度较慢?
2.有没有办法加速IndexColorModel的绘画?
3.如果2.的答案为否,这是从IndexColorModel转换为DirectColorModel的最有效方法吗?我注意到这种转换取决于图像的大小,我想删除该依赖。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

评论太长了......

您确定要创建的 BufferedImage 是否最佳,具体取决于您所使用的操作系统?您应该始终创建一个“兼容的”BufferedImage。比如Windows上最快的可能是TYPE_INT_ARGB,但在OS X上却不是这样,反之亦然。

像这样的东西(哎呀,得墨忒耳法伤害;):

GraphicsEnvironment
        .getLocalGraphicsEnvironment()
        .getDefaultScreenDevice()
        .getDefaultConfiguration()
        .createCompatibleImage(width, height,Transparency.TRANSLUCENT)