У меня была та же проблема, что и у всех остальных, пытающихся применить правильный ответ на этот вопрос, мой массив int фактически получает исключение OutOfboundException, в котором я исправил его, добавив еще один индекс, потому что длина массива должна составлять * высота * 3 после этого я не смог получить изображение, поэтому исправил его, установив растр на изображение
public static Image getImageFromArray(int[] pixels, int width, int height) {
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
WritableRaster raster = (WritableRaster) image.getData();
raster.setPixels(0,0,width,height,pixels);
image.setData(raster);
return image;
}
И вы можете увидеть изображение, если вы покажете его на ярлыке на jframe, как это
JFrame frame = new JFrame();
frame.getContentPane().setLayout(new FlowLayout());
frame.getContentPane().add(new JLabel(new ImageIcon(image)));
frame.pack();
frame.setVisible(true);
установка изображения на imageIcon ().
Последний совет, который вы можете попробовать изменить в Bufferedimage.TYPE_INT_ARGB на что-то другое, совпадающее с изображением, которое вы получили массив этого типа, очень важно, у меня был массив 0 и -1, поэтому я использовал этот тип BufferedImage.TYPE_3BYTE_BGR