Comment utiliser TYPE_BYTE_GRAY de créer efficacement une échelle de gris bufferedimage à l'aide de AWT

J'ai besoin de créer une image en niveaux de gris à partir de données dans un nio ShortBuffer. J'ai une fonction qui mappe les données dans le ShortBuffer d'octet non signé mais est dans un int (facilement modifiable). La méthode que j'ai trouvé utilise un RGB, plus de transparence modèle de couleur et semble être assez inefficent. je n'ai pas été en mesure de voir comment appliquer le TYPE_BYTE_GRAY et modifier le code. je suis nouveau sur Java. Voici mon 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 < HEIGHT; row++) {
        for (int col = 0; col < 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);
}

TIA
Nate