【问题标题】:Image vs. BufferedImage图像与 BufferedImage
【发布时间】:2012-08-04 16:58:32
【问题描述】:

在Java中处理图像的加载和渲染时,我以前总是使用BufferedImages来存储和操作内存中的图像。

但是,我最近遇到了一个 few different sites 使用 Image 类而不是 BufferedImage 这让我想知道 - 有什么区别?

我知道BufferedImage 具有更大/优化的工具集,但是否需要付出任何代价?如果是这样,这个成本什么时候会变得明显?在哪些情况下你会使用Image 而不是BufferedImage,反之亦然?

【问题讨论】:

    标签: java image bufferedimage


    【解决方案1】:

    BufferedImage extends ImageImage 只是一个基本抽象类,你不能实例化它。你肯定在使用BufferedImage 或其他实现。

    【讨论】:

    • 关于"Under the hood you are using BufferedImage for sure":不一定。在 Java 中经常使用 Image 的其他具体实现,并且不能假设在处理具体 Image 实例时它实际上是一个 BufferedImage。
    • 是的,但在JavaDoc 中,我认为VolatileImage 是唯一的另一个实现。不过,我将答案编辑得更准确。
    • Petar:还有其他的,有些没有很好的记录。我知道是因为我在从图像处理过滤器获取图像时遇到了这种情况。我要说的是,你不能做出这个假设。 1+ 供您编辑。
    【解决方案2】:

    直接创建 BufferedImage 和 Toolkit 图像(java.awt.Toolkit 或 Image#getScaledInstance)之间不应该有任何真正的性能差异。您永远不会拥有 Image 的实际实例,因为它是一个抽象类;您只会处理它的子类(例如 BufferedImage)。

    【讨论】:

      猜你喜欢
      • 2015-09-07
      • 2013-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多