我想知道是否有一种方法可以将图像转换为BufferedImage,而不需要像a那样的代码。
new BufferedImage(...)
因为每次新的初始化都会使应用程序变慢,而且如果它在paint()方法中出现就更糟糕了 :(
请建议最优化的转换方式。
谢谢
我想知道是否有一种方法可以将图像转换为BufferedImage,而不需要像a那样的代码。
new BufferedImage(...)
Image
已经是BufferedImage
。那么你可以直接进行强制类型转换:BufferedImage bufImg = null;
if (origImage instanceof BufferedImage) {
bufImg = (BufferedImage) origImage;
else {
bugImg = new BufferedImage(...);
// proper initialization
}
BufferedImage
,那么它很可能是另一个API中的具体子类VolatileImage
。volatile image
文档:
正如您所了解的那样,这种图像无法提供与
volatile image
是一种图像,由于应用程序无法控制的情况(例如由操作系统或其他应用程序引起的情况)而随时可能丢失其内容。
BufferedImage
相同的接口,因此获取BufferedImage
的唯一方法是创建一个并在其上绘制原始图像。因为每个新的初始化都会使应用程序运行变慢
缓存一个BufferedImage
,只有在所需大小发生变化时才创建新的图像。否则清除当前实例的Graphics
对象并进行任何需要的新绘制。
JLabel
或ImageIcon
,我认为现在是时候添加了。为了更快地获得帮助,请发布一个SSCCE。对于需要图像的SSCCE,可以在代码中生成它们,或者热链接到网络上的一些现有图像。以下是一些您可以链接到的示例图像。 - Andrew Thompsonpaint()
方法将BufferedImage
绘制到JLabel
上?Icon
接口。在这个示例中,Histogram
在标签被告知要repaint()
时简单地绘制自己。GradientImage
中所示那样预先渲染图像。BufferedImage
时,您所做的操作是否可以在加载时提前完成? - trashgod