import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.Arrays; import javax.swing.*; import java.awt.*; import java.awt.image.*; public class Image { public static void main(String[] args) { try (BufferedReader r = new BufferedReader(new FileReader("image.xpm"))) { r.readLine(); r.readLine(); r.readLine(); //On skip les 3 première lignes. String[] infos = r.readLine().replaceAll("[\" ]", " ").trim().split(" "); System.out.println(Arrays.toString(infos)); int columns = Integer.parseInt(infos[0]); int rows = Integer.parseInt(infos[1]); int colorCount = Integer.parseInt(infos[2]); int charPerPixel = Integer.parseInt(infos[3]); char[] paletteId = new char[colorCount]; Color[] palette = new Color[colorCount]; for (int i = 0; i < colorCount; i++) { String colorInfos = r.readLine().replaceAll("[\"]", ""); paletteId[i] = colorInfos.charAt(0); System.out.println(colorInfos.substring(4, 11)); palette[i] = Color.decode(colorInfos.substring(4, 11)); } r.readLine(); //On skip la ligne pixels. BufferedImage bi = new BufferedImage(columns, rows, BufferedImage.TYPE_3BYTE_BGR); for (int i = 0; i < rows; i++) { String row = r.readLine().replaceAll("\"", ""); for (int y = 0; y < columns; y++) { char a = row.charAt(y); for (int j = 0; j < paletteId.length; j++) { if (paletteId[j] == a) { bi.setRGB(y, i, palette[j].getRGB()); } } } } JFrame j = new JFrame(); j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); j.setSize(500 + 50, 500 + 50); j.setLayout(null); AwesomeImage a = new AwesomeImage(bi); a.setLocation(10, 10); a.setSize(500, 500); j.add(a); j.setVisible(true); } catch (IOException e) { } } }