Мне нужно создать изображение в оттенках серого из данных в nio ShortBuffer. У меня есть функция, которая отображает данные в ShortBuffer в unsigned byte, но находится в int (легко изменяется). Метод, который я нашел, использует цветную модель RGB плюс прозрачность и, по-видимому, довольно неэффективен. я не смог увидеть, как применить TYPE_BYTE_GRAY и изменить код. Я новичок в Java. Здесь мой код:
    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);
}
ТИА Нат
