我有图像的RBG值的数组int [] [],我需要将它存储到jpg文件。我试着这样做:
BufferedImage image = ImageIO.read(new ByteArrayInputStream(result));
ImageIO.write(image, "jpg", new File("/path/", "snap.jpg"));
但是我有一个int [] []而不是byte []数组。如何将int [] []转换为byte []而不会丢失值?
答案 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]);
}
}