import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; import java.io.DataInputStream; import java.io.FileInputStream; import java.io.IOException; public class TestImage extends JPanel { private static final int WIDTH = 768; private static final int HEIGHT = 1024; private static final String FILE_PATH = "image.bin"; private BufferedImage image; public TestImage() { try { loadImage(); } catch (IOException e) { e.printStackTrace(); } } private void loadImage() throws IOException { FileInputStream fileInputStream = new FileInputStream(FILE_PATH); DataInputStream dataInputStream = new DataInputStream(fileInputStream); byte[] imageData = new byte[WIDTH * HEIGHT * 3]; // Lecture des données de l'image dataInputStream.readFully(imageData); dataInputStream.close(); // Création d'une BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); // Remplissage de l'image à partir des données lues int index = 0; for (int y = 0; y < HEIGHT; y++) { for (int x = 0; x < WIDTH; x++) { int r = imageData[index++] & 0xFF; // Rouge int g = imageData[index++] & 0xFF; // Vert int b = imageData[index++] & 0xFF; // Bleu int rgb = (r << 16) | (g << 8) | b; image.setRGB(x, y, rgb); } } } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(image, 0, 0, null); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> { JFrame frame = new JFrame("Image Display"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(new ImageDisplay()); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); }); } }