Bonjour,
Je poste mon premier message et c'est du lourd (à lire surtout,)
Voila, je code une routine d'extraction de données de fichiers png. J'ai trié les données qu'ils contiennent et je veux maintenant extraire les données brutes de l'image, et c'est là que les choses se compliquent:
Les données contenues dans le fichier sont pêle-mêle, des characteres, des entiers sur 4 octets, des entiers sur 1 octet et des données compressées.
Voici à quoi ressemble ça ressemble :
- | longueur du bloc| nom du bloc | données du bloc
- | 0 | 0 | 5 | 224 | 73 | 68 | 65 | 84 | 120|156|205|153|75|...
- | entier = 1504 | chars= "IDAT" | données compressées sur 1504o
le process est donc : J'identifie le bloc "IDAT", reviens en arrière pour prendre la longueur du bloc et retourner récupérer les données sur la longueur voulue.
Mon problème étant que je ne trouve pas de moyen efficace de récupérer mes données compressées parce les deux formats (le datainputstream et le tableau de bytes) ne permettent pas de naviguer correctement dans le flux( le curseur du datainputstream ne peut qu'avancer), ou pas de lire correctement les données( je n'ai pas trouvé comment obtenir 1504 en concaténant ou additionnant les 4 cellules du tableau).
la seule solution que j'ai trouvé est de faire un objet de chaque et de me servir du tableau pour naviguer et du datainputstream pour récupérer les données, ce qui n'est absolument pas pratique ni sûr de fonctionner.
Quelqu'un Connait-il une alternative?
J'ai essayé d'être le plus clair possible, je m'excuse si ca ne l'est pas.
Autre problème, les données sont compressées selon, je cite:"un dérivé du LZ77 utilisé dans les programmes zip" (cf: specifications png)
Quelqu'un sait à quel point il en est dérivé? si j'utilise la class util.zip, ai-je une chance de récupérer ce que je devrais? ou dois-je utiliser le zlib? (j'avoue, je n'ai pas encore trouvé comment ajouter le pack zlib en C++ à mon projet java, mais je crois que c'est possible,).
Je sais que j'en demande beaucoup d'un coup mais j'ai poussé au maximum mes recherches avant de venir ici, et les questions se sont un peu accumulées... pardon et merci.
Cordialement.
Partager