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:
résultat: "invalid stored block lengths". J'ai découvert que c'était dû au "new inflater(true);"
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();
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
résultat: "need dictionary".
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();
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.
Partager