Salut à tous

J'ai créer une classe contenant une BufferedImage et une String. Je veux sérialiser cette classe malheureusement les BufferedImage ne sont pas sérializables. J'ai trouvé une solution dans un post mais j'ai du mal l'appliquer car si elle fonctionne bien pour l'enregistrement pour la lecture ça ne marche pas

Ma Classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
public class Figurine implements Serializable {
 
	/**
         * 
         */
	private static final long serialVersionUID = 1L;
	private transient BufferedImage m_fig = null;
	private String Description="";	
 
 
	public Figurine (String Descro, String FichFig) throws IOException
	{
		File file = new File(FichFig);
		m_fig= javax.imageio.ImageIO.read(file);
		Description=Descro;	
	}
 
	//Pour l'écriture
 
    private void writeObject(java.io.ObjectOutputStream output) throws IOException {
        OutputStream out = new ByteArrayOutputStream();
        ImageIO.write(m_fig, "png", out);
        byte[] Tbyte = ((ByteArrayOutputStream) out).toByteArray();
        output.defaultWriteObject();
        output.writeInt(Tbyte.length);
        output.write(Tbyte);
    }
    // pour la lecture
    private void readObject(java.io.ObjectInputStream input) throws IOException, ClassNotFoundException {
        input.defaultReadObject();
        byte[] Tbyte = new byte[input.readInt()];
        input.read(Tbyte);
        InputStream in = new ByteArrayInputStream(Tbyte);
        m_fig = ImageIO.read(in);
    }
}
L'écriture se fait comme ceci dans une autre classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 FileOutputStream fSvg = new FileOutputStream(NomFich);
 ObjectOutputStream svgBat = new ObjectOutputStream(fSvg);
 svgBat.writeObject(laFig);
 svgBat.flush();
 svgBat.close();
 fSvg.close();
La lecture comme cela

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
	FileInputStream fSvg = new FileInputStream(l_nom);
	ObjectInputStream svgBat = new ObjectInputStream(fSvg);
	laFig=(Figurine)svgBat.readObject();
	svgBat.close();
	fSvg.close();
A la lecture j'ai l'exception suivante: javax.imageio.IIOException: Error reading PNG image data sur cette instruction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
m_fig = ImageIO.read(in);
Si quelqu'un voit où je me plante je suis preneur de la solution et d'explications. Merci d'avance