要使用哪个图像

时间:2012-05-08 22:21:04

标签: java image bufferedimage imageicon

我已经阅读了java api,但我仍然不明白它们之间的主要区别:

1)ImageIcon 2)BufferedImage 3)VolatileImage 4)图像

有人可以告诉我每个人的使用时间吗?

2 个答案:

答案 0 :(得分:10)

我不会在下面将这个解释称为使用Java Image类型的绝对标准,但这些是我遵循的经验法则:

<强> 1。的ImageIcon

当您想要添加到按钮或用作窗口图标的小图像时,通常会使用此选项。这些可以直接从实现Image接口的任何内容创建。

<强> 2。的BufferedImage

通常在需要操作图像中的单个像素时,或者想要双重缓冲自定义paint(Graphics g)方法时使用。图像驻留在RAM中,因此可能占用大量空间,对BufferedImage实例的修改通常不会加速硬件。

第3。的VolatileImage

硬件加速图像,所以速度很快,但是在绘画之前你会冒着被硬件支持的缓冲区被覆盖的风险(虽然这种情况很少发生,根据Oracle的说法,这只是基于Windows的机器的一个问题)。使用BufferedImage进行双缓冲自定义paint(Graphics g)方法比使用它更加困难,但如果您在渲染到屏幕之前发现自己进行了大量的预处理,那么这是非常值得的。

<强> 4。图片 这基本上只是一个接口,它定义了每个Image应该具有的一些简单功能。当您不需要修改图像的内容和/或想要使处理只读图像数据的方法最灵活时,您应该使用它。

答案 1 :(得分:2)

此外,ImageIcon实现了serializable,因此您可以通过Java套接字发送它。如果您有Image对象,则必须将它们转换为ImageIcon并发送。当客户端使用ImageIcons时,它可以再次将它们转换为图像。