6

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

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

有人能告诉我每个人什么时候使用吗?

4

2 回答 2

12

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

1. 图像图标

这通常在您想要添加到按钮或用作窗口图标的小图像时使用。这些可以直接从任何实现Image接口的东西中创建。

2.缓冲图像

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

3. VolatileImage

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

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

于 2012-05-08T23:02:22.950 回答
2

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

于 2012-05-08T23:13:57.603 回答