如何使用Java从RGB像素值创建有效的图像

3

我有一个包含RGB值的二维数组。我需要从这些像素值创建有效的图像并保存它。下面是给出的二维数组。我希望在我的项目中实现这一部分,请帮助我。谢谢。

         int[] pixels = new int[imageSize * 3];
         int k = 0;
         for(int i=0; i<height; i++)
         {
            for(int j=0; j<width; j++)
            {
                if(k<imageSize*3)
               {
                    pixels[k] = r[i][j];
                    pixels[k+1] = g[i][j];
                    pixels[k+2] = b[i][j];
                }
               k = k+3;
            }
         }
1个回答

7
你可以使用类型为BufferedImage.TYPE_INT_RGBBufferedImage构建图像。该类型将颜色表示为一个int,其中:

  • 第三个字节(16-23)是红色,
  • 第二个字节(8-15)是绿色,
  • 第一个字节(7-0)是蓝色。

你可以按以下方式获取像素RGB值:

int rgb = red;
rgb = (rgb << 8) + green; 
rgb = (rgb << 8) + blue;

示例(Ideone完整示例代码):

  BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 

  for (int y = 0; y < height; y++) {
     for (int x = 0; x < width; x++) {
        int rgb = r[y][x];
        rgb = (rgb << 8) + g[y][x]; 
        rgb = (rgb << 8) + b[y][x];
        image.setRGB(x, y, rgb);
     }
  }

  File outputFile = new File("/output.bmp");
  ImageIO.write(image, "bmp", outputFile);

非常感谢,我看到了类似的答案以及一个光栅类的示例,但是由于我不熟悉该类的用法,所以感到困惑。但是您的答案即使没有光栅类也能正常工作。非常感谢。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接