目前,我有一个简单的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()));
这实际上可以正常工作,但是图像非常暗,比我认为的还要暗.
这是IrfanView中即将显示的图像.您实际上可以看到详细信息,它不是全黑的,但非常暗.我将左上角的每个prixel设置为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()));
标签:image,java
来源: https://codeday.me/bug/20191118/2029259.html