D'abord un peu de contexte. J'ai besoin de retourner une image PNG. Je reçois l'information par octet (dans l'ordre) et je dois le retourner comme un flux. Je parviens à diviser et analyser les morceaux. Mais quand j'ai les données de bloc IDAT je ne sais pas quoi faire avec pour le retourner.Morceau IDAT sous-dimensionné pour retourner l'image
INFO de la IHDR: profondeur de bit = 08 (8 bits par échantillon) et le type de couleur = 06. L'image est de 800 x 600 = 480000
taille IDAT est 179502 sorte que soit 0,374 de la total de la taille de pixel (étrange).
Si je retourne les pixels (toutes les données IDAT telles qu'elles sont), j'obtiens une image qui, lorsque j'ouvre, affiche simplement une image transparente. J'ai aussi essayé d'utiliser 4 octets = 1 pixel car j'ai RGB + alpha mais toujours pas de bon résultat. (Toujours une image transparente ... c'est aussi très bizarre ... j'espérais des images aléatoires, pas des images transparentes). J'ai lu que l'information est compressée, donc mon plan est décompressez-le, retourner le tableau RVB, puis compresser à nouveau, mais ... comment puis-je décompresser et compresser à nouveau? Je ne peux pas trouver l'info/l'algorithme pour le faire.
Je trouve aussi l'hex 0x78 presque toujours après la partie IDAT, donc j'ai déduit que le tableau de pixels de compression ne démarre pas directement après l'IDAT mais quelques octets après ... Si oui ... Comment ça s'organise ? est-ce seulement un tableau de pixels direct ou a-t-il des informations avant et/ou après dans les données de bloc IDAT?
J'espère avoir été assez clair avec ma question et je demande pardon pour mon anglais qui n'est pas parfait. –