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