title: How to use TYPE_BYTE_GRAY to efficiently create a grayscale bufferedimage using AWT
body: <p>I need to create a grayscale image from data in an nio ShortBuffer.  I have a function that maps the data in the ShortBuffer to unsigned byte but is in an int (easily changed).  The method I found uses an RGB plus transparency color model and appears to be quite inefficent.  i have not been able to see how to apply the TYPE_BYTE_GRAY and modify the code.  i'm new to Java.  Here's my code:</p>
  
  <pre><code>    public void paintComponent(Graphics g) {
      final BufferedImage image;
      int[] iArray = {0, 0, 0, 255};  //  pixel
  
      image = (BufferedImage) createImage(WIDTH, HEIGHT);
  
      WritableRaster raster = image.getRaster();
      sBuf.rewind();  // nio ShortBuffer
      for (int row = 0; row &lt; HEIGHT; row++) {
          for (int col = 0; col &lt; WIDTH; col++) {
              int v = stats.mapPix(sBuf.get());  // map short to byte
              iArray[0] = v;  // RGBT
              iArray[1] = v;  
              iArray[2] = v;
              raster.setPixel(col, row, iArray);
          }
      }
      g.drawImage(image, 0, 0, getWidth(), getHeight(), null);
  }
  </code></pre>
  
  <p>TIA
  Nate</p>