Réparer une capture d'écran PNG endommagée

Le PNG est le format d'image le plus auto-vérifiable qui soit : chaque bloc qu'il contient porte sa propre somme de contrôle CRC-32. Grâce à cette structure, une partie des dégâts qui empêchent votre capture de s'ouvrir a une réparation propre et déterministe, tandis qu'une autre a déjà, en silence, emporté les rangées du bas pour de bon. Cet outil lit les chunks et les sommes de contrôle en local et vous dit dans quel cas se trouve chacun.

Votre fichier ne quitte jamais votre appareil — la réparation s'exécute dans votre navigateur. 0 octet téléversé.

Your data is the big block — usually intact. What breaks is the small index. Repair rebuilds it.

Drop a file here or browseTap to choose a file

ZIP · Office · PDF · video · JPG · PNG · RAR/7z · SQLite — repaired right here in your browser. Nothing is uploaded

0 bytes uploadedFree: 3 repairs/day — up to 500 MB video, 100 MB docs & archives, 50 MB photos. Free download. Single repair €5.90. No account required.

Réparer maintenant

  1. Déposez le fichier
  2. La réparation s'exécute en local
  3. Téléchargez le résultat

Quand une capture enregistrée en .png refuse de s'ouvrir, la visionneuse est en général stricte sur un point que le format lui permet de vérifier avec exactitude. Photos de Windows affiche "It looks like we don't support this file format" (il semble que nous ne prenions pas en charge ce format) ou "This file can't be opened" (ce fichier ne peut pas être ouvert) ; Aperçu de macOS indique que le fichier "est peut-être endommagé ou utilise un format qu'Aperçu ne reconnaît pas" ; les outils fondés sur libpng renvoient IDAT: CRC error, IHDR: CRC error ou Not a PNG file. Déposez le fichier ci-dessus et l'outil le parcourt chunk par chunk dans votre navigateur — en vérifiant chaque CRC, en contrôlant la signature de 8 octets et la géométrie de l'IHDR, et en décodant le flux DEFLATE aussi loin qu'il survit — puis réécrit un fichier valide autour de ce qui est réellement présent. Rien n'est téléversé ; une capture montre souvent un solde bancaire, un message privé ou un portail médical, et elle n'a jamais besoin de quitter votre machine pour être examinée.

Comment est construite une capture PNG

Tout PNG commence par la même signature de 8 octets — 89 50 4E 47 0D 0A 1A 0A —, une empreinte délibérément truffée de pièges : l'octet à bit de poids fort 0x89 détecte les canaux limités à 7 bits, le 0D 0A et le 0A isolé détectent la conversion de fin de ligne, et le 1A (fin de fichier sous DOS) arrête une commande type négligente avant qu'elle ne déverse le reste. Vient ensuite une série de chunks, chacun formant un paquet bien rangé : une longueur de 4 octets en big-endian, un type ASCII de 4 octets, les données, puis un CRC-32 de 4 octets calculé sur le type et les données (jamais la longueur) à l'aide du polynôme réfléchi standard 0xEDB88320.

Trois chunks portent l'image. IHDR vient en premier et occupe toujours 13 octets : largeur (u32), hauteur (u32), puis des octets isolés pour la profondeur de bits, le type de couleur, la méthode de compression, la méthode de filtrage et la méthode d'entrelacement. Une capture issue d'un système d'exploitation moderne est presque toujours en 8 bits, non entrelacée, avec un type de couleur 2 (couleurs réelles) ou 6 (couleurs réelles avec alpha). IDAT contient l'image, parfois répartie sur plusieurs chunks IDAT consécutifs ; à l'intérieur se trouve un flux zlib (octet d'en-tête 0x78) de lignes de balayage filtrées compressées avec DEFLATE — chaque rangée précédée d'un octet de filtre 0–4 (None, Sub, Up, Average, Paeth), écrites de haut en bas. IEND est le marqueur de fin vide, doté d'un CRC fixe de AE 42 60 82.

Les captures portent aussi des chunks auxiliaires reconnaissables — leur première lettre en minuscule les désigne comme facultatifs — tels que pHYs (densité de pixels, pour qu'une capture Retina indique son échelle), iCCP ou sRGB (profil colorimétrique), tEXt/eXIf (métadonnées estampillées par l'outil de capture). Ceux-ci peuvent être endommagés ou disparaître sans perdre un seul pixel, car un décodeur est autorisé à ignorer tout chunk auxiliaire qu'il ne comprend pas.

Les dégâts qui se corrigent proprement et de façon déterministe

Comme chaque chunk se vérifie lui-même, toute une catégorie de dégâts du PNG a une réponse connaissable plutôt qu'une supposition :

  • Somme erronée, données correctes. La fausse alerte la plus courante : les octets d'un chunk sont intacts mais son CRC stocké ne correspond plus, si bien que les décodeurs stricts (et pngcheck) rejettent le fichier avec CRC error in chunk IDAT. Recalculer le CRC-32 à partir des données et le réécrire revalide le fichier avec zéro perte : la somme de contrôle était la seule chose défaillante.
  • Dimensions à zéro ou brouillées. Si la largeur ou la hauteur de l'IHDR est à zéro, aucun décodeur ne peut allouer de zone de dessin et le fichier ne s'ouvre pas. Mais l'IHDR porte son propre CRC, calculé à l'époque où les nombres étaient corrects. Cela permet à la réparation de retrouver la géométrie par force brute : essayer des valeurs candidates de largeur/hauteur, recalculer le CRC du chunk pour chacune, et s'arrêter dès qu'il correspond à la valeur stockée. Les dimensions d'origine tombent directement de l'arithmétique — sans deviner.
  • Corruption par sauts de ligne / mode texte. Une capture passée par un client FTP en mode ASCII, une passerelle de messagerie ou un script qui l'a réécrite comme du texte remplace chaque 0D 0A par un 0A isolé (ou l'inverse), corrompant des octets dans tout le fichier. La signature est conçue pour détecter précisément ce cas, et quand la substitution est cohérente elle peut être annulée octet par octet.
  • IEND absent ou cassé. Un fichier par ailleurs complet mais qui a perdu son marqueur de fin déclenche des avertissements de type « fichier incomplet » ; réécrire un IEND valide permet à un décodeur strict d'accepter l'image qui est déjà entière.

Les dégâts qui vous coûtent des rangées

Les limites honnêtes commencent là où les données de pixels elles-mêmes ne sont plus là, et les captures tombent dans les deux cas.

Troncature : le haut revient. C'est la manière la plus fréquente dont une capture se casse : un enregistrement interrompu par un disque plein, une copie coupée au débranchement d'un téléphone, une synchronisation dans le cloud arrêtée à 80 pour cent. L'avant du fichier est intact et la fin — d'ordinaire y compris l'IEND — est tout simplement absente. Comme les lignes de balayage s'écrivent de haut en bas, un PNG tronqué se récupère dans la partie supérieure de l'image : de vrais pixels jusqu'à l'endroit où les données s'arrêtent. La réparation réécrit une clôture valide pour qu'un décodeur accepte le fichier et dessine ce qui a survécu. Les rangées situées sous la coupure ne sont pas endommagées, elles sont absentes : aucun outil ne peut donc les rendre — le résultat est un fichier partiel honnête.

Dégât en plein milieu de l'IDAT : le bas est du bruit. Quand la corruption tombe à l'intérieur du flux DEFLATE plutôt qu'à la fin, la raison pour laquelle elle est irrécupérable tient à DEFLATE lui-même : c'est un flux continu unique où chaque partie dépend de la précédente, sans marqueurs périodiques permettant de se resynchroniser. Dès que le décodeur bute sur le mauvais octet, il perd le fil (zlib signale incorrect data check / invalid distance too far back), et tout ce qui suit se décode comme du bruit. Un seul octet altéré à mi-hauteur peut vous coûter toutes les rangées en dessous, pas seulement une ligne : l'image est nette au-dessus de l'impact et illisible en dessous. C'est pourquoi une capture s'ouvre avec un haut net et une moitié inférieure floue ou grise, exactement la même forme de résultat qu'un JPEG tronqué.

Comparez avec les formats qui conservent un index séparé de leurs données — le moov d'une vidéo QuickTime, un b-tree de SQLite —, où reconstruire la carte sauve le fichier entier. Le PNG range ses pixels dans un unique flux DEFLATE indivisible : une blessure à mi-hauteur est donc permanente en dessous de la coupure.

Ce que cela peut et ne peut pas réparer

Peut réparer

  • Un chunk dont le CRC-32 stocké ne correspond plus à des données par ailleurs intactes : le CRC est recalculé et le fichier se valide sans aucune perte
  • Largeur/hauteur de l'IHDR à zéro ou brouillées, retrouvées en testant des candidats par force brute contre le propre CRC stocké du chunk
  • Corruption par sauts de ligne / mode texte (CR-LF ↔ LF) due à un transfert en mode ASCII ou à un script qui a réécrit le fichier comme du texte
  • Un marqueur de fin IEND absent ou mal formé dans un fichier dont les données d'image sont par ailleurs complètes
  • Une capture tronquée : les rangées supérieures qui ont bien été écrites se redécodent en pixels réels

Ne peut pas réparer

  • Les rangées d'image sous un impact en plein milieu de l'IDAT : DEFLATE ne peut pas se resynchroniser, donc tout ce qui suit l'octet endommagé est du bruit
  • Les rangées sous la coupure dans un fichier tronqué : ces pixels n'ont jamais été écrits et aucun outil ne peut les inventer
  • Un fichier qui se lit comme 0 octet ou tout en zéros : il n'y a aucune image à reconstruire (c'est de la récupération de données, pas de la réparation)
  • Une capture qu'une autre application a réencodée ou recompressée après le dégât : les mauvais pixels sont désormais gravés dedans
  • La restauration pixel par pixel d'une moitié inférieure brouillée : la réparation renvoie un partiel honnête, pas le retour des rangées grises

Si une réparation échoue, nous vous expliquons pourquoi (données manquantes ou structure endommagée), et vous n'êtes jamais facturé pour une réparation échouée.

Questions fréquentes

Pourquoi ma capture d'écran PNG ne s'ouvre-t-elle pas ?

En général pour l'une de trois raisons : la signature de 8 octets du début a été altérée, si bien que les visionneuses ne reconnaissent pas le fichier comme un PNG ; l'en-tête IHDR qui stocke la largeur et la hauteur est à zéro ou brouillé, si bien qu'un décodeur ne peut pas préparer la zone de dessin ; ou les données compressées IDAT ont été tronquées ou corrompues à mi-hauteur. Les deux premières sont souvent des réparations déterministes, car le PNG stocke un CRC-32 sur chaque chunk. La troisième est là où commencent les limites honnêtes.

Que signifie un "IDAT: CRC error" ?

Chaque chunk se termine par un CRC-32 de quatre octets calculé sur son type et ses données. Quand un décodeur le recalcule et que la valeur ne correspond pas, il signale une erreur de CRC : les octets de ce chunk ont changé depuis l'écriture du fichier. Si seule la somme stockée est erronée et que les données sont intactes, la recalculer répare le fichier sans plus. Si ce sont les données elles-mêmes qui ont changé, le CRC fait son travail en vous prévenant, et ce qui peut être récupéré dépend du chunk qui a été touché.

Peut-on récupérer une capture tronquée ?

Partiellement, et seulement le haut. Le PNG écrit ses lignes de balayage de haut en bas au sein d'un unique flux DEFLATE ; un fichier coupé se décode donc proprement jusqu'à l'endroit où les données s'arrêtent, puis s'interrompt. Vous récupérez la partie supérieure de l'image sous forme de pixels réels ; un IEND valide est réécrit pour qu'une visionneuse l'accepte. Les rangées sous la coupure n'ont jamais figuré dans le fichier : aucun outil ne peut donc les restaurer.

Pourquoi le bas de ma capture est-il gris ou brouillé ?

Parce que DEFLATE, la compression qu'utilise le PNG, est un flux continu sans moyen de se resynchroniser après un dégât. Si la corruption tombe au milieu des données IDAT plutôt qu'à la fin, le décodeur perd le fil à cet octet et tout ce qui suit se décode comme du bruit, pas seulement une rangée. C'est pourquoi un dégât à mi-hauteur coûte généralement toutes les rangées sous l'impact, tandis qu'une troncature propre laisse au moins le haut intact.

Ma capture est-elle téléversée pour être réparée ?

Non. Le fichier est lu depuis votre disque et reconstruit dans l'onglet de votre navigateur ; le parcours des chunks et les vérifications de CRC s'exécutent en local. Vous pouvez ouvrir l'onglet Réseau et confirmer que 0 octet en sort — ce qui compte quand une capture montre un solde bancaire, une conversation privée, un mot de passe ou un portail médical.

Associés : Réparer une photo JPEG · Les chunks et les CRC du PNG, expliqués · Vérifier la promesse du zéro téléversement