Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中映像和BuffereImage的区别_Java_Image_Bufferedimage - Fatal编程技术网

Java中映像和BuffereImage的区别

Java中映像和BuffereImage的区别,java,image,bufferedimage,Java,Image,Bufferedimage,Image和BuffereImage之间的区别是什么 我可以直接从图像源“Image.png”创建BuffereImage吗?图像是一个抽象类。您不能直接实例化图像。BuffereImage是一个后代,您可以实例化它。因此,如果您了解抽象类和继承,您将了解何时使用它们 例如,如果您使用多个图像子体,它们将共享一些从图像继承的公共属性 如果您想编写一个函数,将任何一种子体作为参数,您可以执行以下操作: function myFunction(Image myImage) { int i = m

Image和BuffereImage之间的区别是什么


我可以直接从图像源“Image.png”创建BuffereImage吗?

图像是一个抽象类。您不能直接实例化图像。BuffereImage是一个后代,您可以实例化它。因此,如果您了解抽象类和继承,您将了解何时使用它们

例如,如果您使用多个图像子体,它们将共享一些从图像继承的公共属性

如果您想编写一个函数,将任何一种子体作为参数,您可以执行以下操作:

function myFunction(Image myImage) {
  int i = myImage.getHeight();
  ...
}
然后,可以通过传递BuffereImage或VolatileImage来调用该函数

BufferedImage myBufferedImage;
VolatileImage myVolatileImage;
...
myFunction(myVolatileImage);
myFunction(myBufferedImage);

您不会将图像转换为BuffereImage,因为您永远不会拥有图像。

如果您熟悉Java的util.List,则图像和BuffereImage之间的区别与列表和LinkedList之间的区别相同

图像是一个通用概念,BuffereImage是通用概念的具体实现;有点像宝马是一款汽车

图像
缓冲图像
之间有什么区别

正如Oracle Java图像处理教程中所述

  • Image类是将图形图像表示为像素矩形数组的超类
  • java.awt.image.buffereImage类,它扩展了image类,允许应用程序直接使用图像数据进行操作(例如,检索或设置像素颜色)。应用程序可以直接构造此类的实例
BuffereImage类是Java2D即时模式成像API的基石。它管理内存中的图像,并提供存储、解释和获取像素数据的方法。由于BuffereImage是Image的一个子类,因此可以通过接受Image参数的Graphics和Graphics2D方法进行渲染

BuffereImage本质上是具有可访问数据缓冲区的映像。因此,直接使用BuffereImage更有效。BuffereImage具有彩色模型和图像数据光栅。ColorModel提供图像像素数据的颜色解释


我可以直接从图像源“Image.png”创建
buffereImage

当然

BufferedImage img = ImageIO.read(getClass().getResource("/path/to/image"));