相对于颜色模型的Java绘制速度
我有一个带有IndexColorModel的BufferedImage。我需要将该图像绘制到屏幕上,但我注意到使用IndexColorModel时这很慢。但是,如果我通过身份仿射变换运行BufferedImage,它将使用DirectColorModel创建图像,并且绘画速度会更快。下面的代码我使用相对于颜色模型的Java绘制速度
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上并不是这样,反之亦然。
像这样的东西(哎哟,得墨忒耳的法伤):
GraphicsEnvironment
.getLocalGraphicsEnvironment()
.getDefaultScreenDevice()
.getDefaultConfiguration()
.createCompatibleImage(width, height,Transparency.TRANSLUCENT)
我无法控制最初的ColorModel。我必须调用一个返回给我一个IndexColorModel的函数。然后我调用displayImage = new BufferedImage(cm,displayImage.getRaster(),false,null),其中cm是一个IndexColorModel。有没有更好的方式来整合这个IndexColorModel? – Jon 2010-03-29 17:30:19
你是如何创建的BufferedImage? – 2010-03-26 23:09:17
我使用1.4版通过dcm4che创建它。这是一个非常复杂的项目。你喜欢什么特定的信息? – Jon 2010-03-27 00:09:44