我目前有一个简单的 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,但它仍然非常暗,但你至少可以看到我认为应该是白色的轮廓:
有谁知道为什么?
我相信使用以下方法您会有更好的运气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)
| 归档时间: |
|
| 查看次数: |
1470 次 |
| 最近记录: |