Wie man TYPE_BYTE_GRAY verwendet, um mit AWT @ effizient ein Graustufen-gepuffertes Bild zu erstell

Ich muss ein Graustufenbild aus Daten in einem nio ShortBuffer erstellen. Ich habe eine Funktion, die die Daten im ShortBuffer auf vorzeichenlose Bytes abbildet, aber in einem int (leicht zu ändern). Die Methode, die ich gefunden habe, verwendet ein RGB-plus-Transparenz-Farbmodell und scheint ziemlich ineffizient zu sein. Ich war nicht in der Lage zu sehen, wie man TYPE_BYTE_GRAY anwendet und den Code ändert. Ich bin neu in Java. Hier ist mein 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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage