将int [] []的RGB保存为图像文件

时间:2014-06-30 18:20:31

标签: java image rgb bufferedimage

我有图像的RBG值的数组int [] [],我需要将它存储到jpg文件。我试着这样做:

 BufferedImage image = ImageIO.read(new ByteArrayInputStream(result));
 ImageIO.write(image, "jpg", new File("/path/", "snap.jpg"));

但是我有一个int [] []而不是byte []数组。如何将int [] []转换为byte []而不会丢失值?

1 个答案:

答案 0 :(得分:5)

即使int[][]byte[]的问题不同,您的表达式ImageIO.read(new ByteArrayInputStream(result));也没有意义,因为它希望result成为图像的内容文件(不仅仅是像素值,而是所有可识别图像文件格式的标题,填充等)。

我认为你想要的是:

final int height = result.length;
final int width = result[0].length;
final BufferedImage image =
    new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for (int y = 0; y < height; ++y) {
    for (int x = 0; x < width; ++x) {
        bufferedImage.setRGB(x, y, result[y][x]);
    }
}