2015-02-23 122 views
2

我有一個包含RGB值的二維數組。我需要從這些像素值創建一個有效的圖像並保存它。下面給出了二維數組。我想在我的項目中實現這個部分,所以請幫助我。謝謝。如何使用java創建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; 
      } 
     } 

回答

4

你可以建立BufferedImage.TYPE_INT_RGB類型的BufferedImage。這種類型的代表色作爲ìnt其中:

  • 第三字節(16-23)是紅色,
  • 第二字節(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); 
+0

太感謝你了,我有一個光柵類沿着看到了類似的答案用你的例子,我感到困惑,因爲我不知道這個類的用法。但是即使沒有光柵類,你的答案也可以工作。非常感謝。 – user3364490 2015-02-23 12:37:40