Bonjour,

Je souhaite décompresser le flux de données d'une image png compréssées via une méthode zip, j'ai essayé beaucoup de choses, et je suis à cours d'idées.

J'ai tenté les formats disponibles de la classe util.zip, les inflater, les InflaterInputStream, j'ai cherché des exemples et de la doc, j'ai adapté celui de la jdoc:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
DataInputStream ISdeflated = new DataInputStream(new BufferedInputStream(new FileInputStream("out.txt")));
byte[] deflatedbytearray = new byte[ISdeflated.available()];
 
ISdeflated.read(deflatedbytearray, 0, ISdeflated.available());
 
Inflater  inflated = new Inflater(true);
inflated.setInput(deflatedbytearray);
 
byte[] resultarray = new byte[longueurFichier*largeurFichier];
inflated.inflate(resultarray);
inflated.end();
résultat: "invalid stored block lengths". J'ai découvert que c'était dû au "new inflater(true);"
Sans le "true", pas d'erreur mais l'affichage de resultarray me sort une série de 0.

Et un autre que j'ai difficilement trouvé: ici
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
DataInputStream ISdeflated = new DataInputStream(new BufferedInputStream(new FileInputStream("out.txt")));
byte[] deflatedbytearray = new byte[ISdeflated.available()];
ISdeflated.read(deflatedbytearray, 0, ISdeflated.available());
 
ByteArrayOutputStream bos = new ByteArrayOutputStream(deflatedbytearray.length);
 
Inflater  inflated = new Inflater();
inflated.setInput(deflatedbytearray);
 
byte[] buf = new byte[2048];
while (!inflated.finished())
{
        int count = inflated.inflate(buf);
        bos.write(buf, 0, count);
}
bos.close();
 
byte[] resultarray = bos.toByteArray();
résultat: "need dictionary".

Donc j'ai exploré et beaucoup de détails bizarres et de questions se sont accumulés, comme:
-"Comment récupérer et utiliser un dictionnaire un adler32 ou un CRC?", ou
-"Mon flux dispose d'un bloc CRC, dois-je quand même utiliser un Adler32?" et
-"Dois-je intégrer mon bloc CRC au flux à décompresser ou le récupérer à part"?
entre autres...

Les exemples sur util.zip sont rares et assez peu clairs sur le rôle de chaque objet, et les cours inexistants.

Quelqu'un sait-il se servir des inflater s'il vous plait?

Merci d'avance.