我有一个带有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的最有效方法吗?我注意到这种转换取决于图像的大小,我想删除这种依赖。

谢谢您的帮助

最佳答案

评论太久了...

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

像这样的东西(哎呀,得墨meter耳定律很痛苦;):

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

07-26 09:42