nio ShortBuffer のデータからグレースケール イメージを作成する必要があります。ShortBuffer のデータを符号なしバイトにマップする関数がありますが、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);
}
TIAネイト