【问题标题】:How to create valid image from RGB pixel values using java如何使用java从RGB像素值创建有效图像
【发布时间】:2015-04-24 10:07:51
【问题描述】:

我有一个包含 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;
            }
         }

【问题讨论】:

    标签: java arrays image image-processing


    【解决方案1】:

    您可以构建BufferedImage.TYPE_INT_RGB 类型的BufferedImage。此类型将颜色表示为int,其中:

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

    可以得到像素RGB的值如下:

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

    示例 (Ideone full example code):

      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);
    

    【讨论】:

    • 非常感谢,我已经看到了类似的答案以及光栅类以及您的示例,但我很困惑,因为我不知道该类的用法。但是即使没有栅格类,您的答案也有效。非常感谢。
    猜你喜欢
    • 2015-05-30
    • 2012-06-05
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多