Java:将灰度整数数组保存到图像

luu*_*sen 5 java image

我目前有一个简单的 int[] 灰度值数组,范围为 0 ... 255。我想将这些值保存到一个简单的图像文件中。我执行以下操作:

// flatten the 2d array
int[] result = Arrays.stream(imgData)
    .flatMapToInt(Arrays::stream)
    .toArray();

BufferedImage outputImage = new BufferedImage(w, h, BufferedImage.TYPE_BYTE_GRAY);
outputImage.setRGB(0, 0, w, h, result, 0, w);
ImageIO.write(outputImage, INPUT_FILETYPE, new File(getOutputFileSystemString()));
Run Code Online (Sandbox Code Playgroud)

这实际上工作正常,但图像非常暗,比我认为的更暗。

这是 IrfanView 中的输出图像。你实际上可以看到细节,它不是全黑,但它非常暗。我将左上角的每个像素都设置为 255,但它仍然非常暗,但你至少可以看到我认为应该是白色的轮廓:

http://i.imgur.com/nkiy2Hv.png

有谁知道为什么?

Joh*_*opp 3

我相信使用以下方法您会有更好的运气WritableRaster

BufferedImage outputImage = new BufferedImage(w, h, BufferedImage.TYPE_BYTE_GRAY);
WritableRaster raster = outputImage.getRaster();
raster.setSamples(0, 0, w, h, 0, result);
ImageIO.write(outputImage, INPUT_FILETYPE, new File(getOutputFileSystemString()));
Run Code Online (Sandbox Code Playgroud)