Tof*_*fiq 22 java bufferedimage image
Image和BufferedImage有什么区别?
我可以直接从图像源"image.png"创建BufferedImage吗?
Alv*_*vin 24
如果您熟悉Java的util.List,则Image和BufferedImage之间的区别与List和LinkedList之间的区别相同.
Image是一个通用概念,BufferedImage是泛型概念的具体实现; 有点像宝马是一辆汽车的制造.
Mar*_*ams 15
图像是一个抽象类.您无法直接实例化Image.BufferedImage是一个后代,你可以实例化那个.因此,如果您了解抽象类和继承,您将了解何时使用它们.
例如,如果您使用多个Image后代,则它们将共享一些从Image继承的公共属性.
如果你想编写一个将任何一种后代作为参数的函数,你可以这样做:
function myFunction(Image myImage) {
int i = myImage.getHeight();
...
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过传递BufferedImage或VolatileImage来调用该函数.
BufferedImage myBufferedImage;
VolatileImage myVolatileImage;
...
myFunction(myVolatileImage);
myFunction(myBufferedImage);
Run Code Online (Sandbox Code Playgroud)
您不会将图像转换为BufferedImage,因为您永远不会有图像.
Pau*_*tha 11
Image和之间有什么区别BufferedImage?
正如使用Oracle Java教程中所述
BufferedImage类是Java 2D立即模式成像API的基石.它管理内存中的图像,并提供存储,解释和获取像素数据的方法.由于BufferedImage是Image的子类,因此可以通过接受Image参数的Graphics和Graphics2D方法进行渲染.
BufferedImage本质上是一个具有可访问数据缓冲区的Image.因此,直接使用BufferedImage更有效.BufferedImage具有ColorModel和图像数据的栅格.ColorModel提供图像像素数据的颜色解释.
我可以
BufferedImage直接从图像源"image.png"创建吗?
当然.
BufferedImage img = ImageIO.read(getClass().getResource("/path/to/image"));
Run Code Online (Sandbox Code Playgroud)