【问题标题】:Create image from 2D Color Array从 2D 颜色阵列创建图像
【发布时间】:2012-11-03 16:36:08
【问题描述】:

我有一个名为 image[][] 的数组,我想用它创建一个 BufferedImage,这样我就可以让播放器将它存储在一个文件中。

【问题讨论】:

  • BufferedImage.setRGB(x,y,rgb) 注意它会比其他一些从数组创建图像的方法慢。如果这不能回答问题(问题是什么,顺便说一句?)发布您的最佳尝试SSCCE

标签: java image colors bufferedimage


【解决方案1】:
// Initialize Color[][] however you were already doing so.
Color[][] image;

// Initialize BufferedImage, assuming Color[][] is already properly populated.
BufferedImage bufferedImage = new BufferedImage(image.length, image[0].length,
        BufferedImage.TYPE_INT_RGB);

// Set each pixel of the BufferedImage to the color from the Color[][].
for (int x = 0; x < image.length; x++) {
    for (int y = 0; y < image[x].length; y++) {
        bufferedImage.setRGB(x, y, image[x][y].getRGB());
    }
}

这是一种创建(并可能存储)图像的简单方法,如果您想要这样做的话。然而,这无论如何都不是有效的。尝试使用更大的图像,您会看到明显的速度差异。

【讨论】:

  • 第一次编辑前的+1,但特别是对于“这无论如何都没有效率”。首先检查Color 数组是如何创建的也可能是有利可图的,因为完全放弃数组并直接绘制到图像可能会更快。但这一切都取决于除了 OP 之外任何人都不知道的信息.. :(
  • 问题,BufferedImage.TYPE_INT_RGB和BufferedImage.TYPE_INT_ARGB有什么区别。我记得以前用过 ARGB,但不是 RBG。 A 和 alpha 有关系吗?
  • @javawarrior 我的意思是......这不会告诉我们太多。但由此,您可以看出这将在此循环中运行400 * 400 = 160,000 迭代。如果bufferedImage.setRGB(...) 是一个缓慢的操作,那么这种转换可能会非常昂贵。
  • @Bucco 是的,A 代表 alpha。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 2010-12-30
  • 2020-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多