Einen beschädigten PNG-Screenshot reparieren

Ein PNG ist das am gründlichsten selbstprüfende Bildformat, das es gibt: Jeder Block darin trägt seine eigene CRC-32-Prüfsumme. Diese Struktur sorgt dafür, dass ein Teil der Schäden, die das Öffnen deines Screenshots verhindern, eine saubere, deterministische Reparatur ist — und ein anderer Teil sich die unteren Zeilen längst still und für immer geholt hat. Dieses Tool liest die Chunks und Prüfsummen lokal und sagt dir, was von beidem vorliegt.

Deine Datei verlässt nie dein Gerät — die Reparatur läuft in deinem Browser. 0 Bytes hochgeladen.

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.

Jetzt reparieren

  1. Datei ablegen
  2. Reparatur läuft lokal
  3. Ergebnis herunterladen

Wenn sich ein als .png gespeicherter Screenshot nicht öffnen lässt, ist der Betrachter meist bei etwas streng, das ihm das Format ganz genau zu prüfen erlaubt. Windows Fotos meldet "It looks like we don't support this file format" (dieses Dateiformat wird offenbar nicht unterstützt) oder "This file can't be opened" (diese Datei kann nicht geöffnet werden); die macOS-Vorschau sagt, die Datei sei "may be damaged or use a file format Preview doesn't recognize" (möglicherweise beschädigt oder in einem Format, das die Vorschau nicht erkennt); Tools auf libpng-Basis werfen IDAT: CRC error, IHDR: CRC error oder Not a PNG file. Lege die Datei oben ab, und das Tool geht sie Chunk für Chunk in deinem Browser durch — prüft jedes CRC, kontrolliert die 8-Byte-Signatur und die IHDR-Geometrie und decodiert den DEFLATE-Stream so weit, wie er überlebt — und schreibt dann eine gültige Datei um das herum, was wirklich vorhanden ist. Nichts wird hochgeladen; ein Screenshot zeigt oft einen Kontostand, eine private Nachricht oder ein Patientenportal, und er muss dein Gerät nie verlassen, um geprüft zu werden.

Wie ein PNG-Screenshot aufgebaut ist

Jedes PNG beginnt mit derselben 8-Byte-Signatur89 50 4E 47 0D 0A 1A 0A — einem Fingerabdruck, der bewusst mit Stolperdrähten gespickt ist: Das Byte mit gesetztem höchsten Bit 0x89 entlarvt auf 7 Bit beschnittene Kanäle, das 0D 0A und das einzelne 0A fangen eine Zeilenende-Umwandlung ab, und das 1A (DOS-Dateiende) hindert ein unbedachtes type daran, den Rest auszugeben. Danach folgt eine Reihe von Chunks, jeder ein sauberes Paket: eine 4-Byte-Länge in Big-Endian, ein 4-Byte-ASCII-Typ, die Daten und ein 4-Byte-CRC-32, berechnet über Typ und Daten (nie über die Länge) mit dem üblichen reflektierten Polynom 0xEDB88320.

Drei Chunks tragen das Bild. IHDR steht an erster Stelle und ist immer 13 Bytes lang: Breite (u32), Höhe (u32), dann einzelne Bytes für Bittiefe, Farbtyp, Kompressionsverfahren, Filterverfahren und Interlace-Verfahren. Ein Screenshot eines modernen Betriebssystems ist fast immer 8-Bit, nicht interlaced, Farbtyp 2 (Truecolor) oder 6 (Truecolor mit Alpha). IDAT enthält das Bild, mitunter auf mehrere aufeinanderfolgende IDAT-Chunks verteilt; darin steckt ein zlib-Stream (Header-Byte 0x78) aus DEFLATE-komprimierten gefilterten Bildzeilen — jede Zeile mit einem Filter-Byte 0–4 (None, Sub, Up, Average, Paeth) vorangestellt, von oben nach unten geschrieben. IEND ist die leere Endmarkierung mit einem festen CRC von AE 42 60 82.

Screenshots führen außerdem erkennbare Zusatz-Chunks mit sich — der kleingeschriebene erste Buchstabe kennzeichnet sie als optional — etwa pHYs (Pixeldichte, damit eine Retina-Aufnahme ihren Maßstab angibt), iCCP oder sRGB (Farbprofil), tEXt/eXIf (Metadaten, die das Aufnahme-Tool einstempelt). Diese können beschädigt werden oder verlorengehen, ohne dass ein einziger Pixel verloren geht, denn ein Decoder darf jeden Zusatz-Chunk überspringen, den er nicht versteht.

Der Schaden mit sauberer, deterministischer Reparatur

Weil sich jeder Chunk selbst prüft, hat eine ganze Klasse von PNG-Schäden eine berechenbare Antwort statt einer Vermutung:

  • Falsche Prüfsumme, richtige Daten. Der häufigste Fehlalarm: Die Bytes eines Chunks sind unversehrt, aber sein gespeichertes CRC passt nicht mehr, sodass strenge Decoder (und pngcheck) die Datei mit CRC error in chunk IDAT ablehnen. Das CRC-32 aus den Daten neu zu berechnen und zurückzuschreiben macht die Datei mit null Verlust wieder gültig — die Prüfsumme war das Einzige, das nicht stimmte.
  • Auf null gesetzte oder verwürfelte Dimensionen. Ist die Breite oder Höhe im IHDR auf null gesetzt, kann kein Decoder eine Leinwand anlegen und die Datei öffnet nicht. Doch IHDR trägt sein eigenes CRC, berechnet zu der Zeit, als die Zahlen noch stimmten. Das erlaubt der Reparatur, die Geometrie per Brute Force zu ermitteln: Kandidatenwerte für Breite/Höhe durchprobieren, für jeden das Chunk-CRC neu berechnen und anhalten, sobald es zum gespeicherten Wert passt. Die ursprünglichen Abmessungen fallen direkt aus der Rechnung — ohne Raten.
  • Verstümmelung durch Zeilenumbrüche / Textmodus. Ein Screenshot, der durch einen FTP-Client im ASCII-Modus, eine Chat-Brücke oder ein Skript geschickt wurde, das ihn als Text neu geschrieben hat, ersetzt jedes 0D 0A durch ein einzelnes 0A (oder umgekehrt) und beschädigt so Bytes im gesamten Dokument. Die Signatur ist genau dafür ausgelegt, dies zu erkennen, und wenn die Ersetzung konsistent ist, lässt sie sich Byte für Byte rückgängig machen.
  • Fehlendes oder defektes IEND. Eine ansonsten vollständige Datei, die ihre abschließende Endmarkierung verloren hat, löst Warnungen wegen "unvollständiger Datei" aus; ein gültiges IEND neu zu schreiben, lässt einen strengen Decoder das Bild akzeptieren, das bereits vollständig da ist.

Der Schaden, der dich Zeilen kostet

Die ehrlichen Grenzen beginnen dort, wo die Pixeldaten selbst weg sind, und Screenshots erwischt es auf beide Arten.

Abschneiden — der obere Teil kommt zurück. Das ist die häufigste Art, wie ein Screenshot kaputtgeht: ein Speichervorgang, der durch eine volle Platte unterbrochen wurde, eine Kopie, die beim Abziehen eines Telefons abbrach, eine Cloud-Synchronisierung, die bei 80 Prozent stehen blieb. Der vordere Teil der Datei ist unversehrt, und das Ende — normalerweise samt IEND — fehlt schlicht. Weil die Bildzeilen von oben nach unten geschrieben werden, lässt sich ein abgeschnittenes PNG in seinen oberen Bildteil retten: echte Pixel bis zu der Stelle, an der die Daten enden. Die Reparatur schreibt einen gültigen Abschluss neu, damit ein Decoder die Datei akzeptiert und das zeichnet, was überlebt hat. Die Zeilen unterhalb des Schnitts sind nicht beschädigt, sie sind nicht vorhanden, also kann kein Tool sie zurückbringen — das Ergebnis ist ein ehrliches Teilbild.

IDAT-Schaden mitten im Stream — der untere Teil ist Rauschen. Landet die Beschädigung innerhalb des DEFLATE-Streams statt am Ende, liegt der Grund für die Unwiederbringlichkeit im DEFLATE selbst: Es ist ein einziger fortlaufender Stream, in dem jeder Teil vom Vorangegangenen abhängt, ohne regelmäßige Markierungen zum Resynchronisieren. Sobald der Decoder auf das fehlerhafte Byte trifft, verliert er den Faden (zlib meldet incorrect data check / invalid distance too far back), und alles danach wird als Rauschen decodiert. Ein einziges gekipptes Byte auf halber Höhe kann dich jede Zeile darunter kosten, nicht nur eine — das Bild ist oberhalb des Treffers sauber und unterhalb Müll. Deshalb öffnet sich ein Screenshot mit scharfem oberen Teil und einer verschmierten oder grauen unteren Hälfte — dieselbe Ergebnisform, die ein abgeschnittenes JPEG liefert.

Vergleiche das mit Formaten, die einen Index getrennt von ihren Daten führen — das moov eines QuickTime-Videos, ein SQLite-B-Baum —, bei denen der Wiederaufbau der Karte die ganze Datei rettet. PNG hält seine Pixel in einem einzigen unteilbaren DEFLATE-Stream, deshalb ist eine Wunde mitten im Stream unterhalb des Schnitts dauerhaft.

Was sich reparieren lässt und was nicht

Kann repariert werden

  • Ein Chunk, dessen gespeichertes CRC-32 nicht mehr zu den ansonsten unversehrten Daten passt — das CRC wird neu berechnet und die Datei validiert ohne Verlust
  • Auf null gesetzte oder verwürfelte IHDR-Breite/-Höhe, wiederhergestellt durch Brute-Force von Kandidaten gegen das eigene gespeicherte CRC des Chunks
  • Verstümmelung durch Zeilenumbrüche / Textmodus (CR-LF ↔ LF) von einer Übertragung im ASCII-Modus oder einem Skript, das die Datei als Text neu geschrieben hat
  • Eine fehlende oder fehlerhafte IEND-Endmarkierung bei einer Datei, deren Bilddaten ansonsten vollständig sind
  • Ein abgeschnittener Screenshot: Die oberen Zeilen, die tatsächlich geschrieben wurden, decodieren wieder als echte Pixel

Kann nicht repariert werden

  • Bildzeilen unterhalb eines IDAT-Treffers mitten im Stream — DEFLATE kann nicht resynchronisieren, also ist alles nach dem beschädigten Byte Rauschen
  • Die Zeilen unterhalb des Schnitts in einer abgeschnittenen Datei — diese Pixel wurden nie geschrieben, und kein Tool kann sie erfinden
  • Eine Datei, die sich als 0 Bytes oder lauter Nullen liest — es gibt kein Bild zum Wiederaufbau (das ist eine Datenrettung, keine Reparatur)
  • Ein Screenshot, den eine andere App nach dem Schaden neu codiert oder neu komprimiert hat — die falschen Pixel sind jetzt eingebrannt
  • Die pixelgenaue Wiederherstellung einer verunstalteten unteren Hälfte — die Reparatur liefert ein ehrliches Teilbild, nicht die grauen Zeilen zurück

Wenn eine Reparatur fehlschlägt, sagen wir dir warum (fehlende Daten gegenüber beschädigter Struktur), und für eine fehlgeschlagene Reparatur wird dir nie etwas berechnet.

Häufige Fragen

Warum lässt sich mein PNG-Screenshot nicht öffnen?

Meist eine von drei Ursachen: Die 8-Byte-Signatur am Anfang wurde verändert, sodass Betrachter die Datei nicht als PNG erkennen; der IHDR-Header, der Breite und Höhe speichert, ist auf null gesetzt oder verwürfelt, sodass ein Decoder keine Leinwand einrichten kann; oder die komprimierten IDAT-Daten wurden abgeschnitten oder auf halbem Weg beschädigt. Die ersten beiden sind oft deterministische Reparaturen, weil PNG für jeden Chunk ein CRC-32 speichert. Beim dritten beginnen die ehrlichen Grenzen.

Was bedeutet ein "IDAT: CRC error"?

Jeder Chunk endet mit einem Vier-Byte-CRC-32, berechnet über seinen Typ und seine Daten. Wenn ein Decoder es neu berechnet und der Wert nicht übereinstimmt, meldet er einen CRC-Fehler — die Bytes in diesem Chunk haben sich geändert, seit die Datei geschrieben wurde. Ist nur die gespeicherte Prüfsumme falsch und sind die Daten intakt, repariert das Neuberechnen die Datei auf einen Schlag. Haben sich die Daten selbst geändert, tut das CRC seine Arbeit, indem es dich warnt, und wie viel sich wiederherstellen lässt, hängt davon ab, welcher Chunk getroffen wurde.

Lässt sich ein abgeschnittener Screenshot wiederherstellen?

Teilweise, und nur der obere Teil. PNG schreibt seine Bildzeilen von oben nach unten in einem einzigen DEFLATE-Stream, sodass eine zu früh abgeschnittene Datei sauber bis zu der Stelle decodiert, an der die Daten enden, und dann stoppt. Du bekommst den oberen Teil des Bildes als echte Pixel zurück; ein gültiges IEND wird neu geschrieben, damit ein Betrachter es akzeptiert. Die Zeilen unterhalb des Schnitts waren nie in der Datei, also kann kein Tool sie wiederherstellen.

Warum ist der untere Teil meines Screenshots grau oder verunstaltet?

Weil DEFLATE, die von PNG genutzte Kompression, ein fortlaufender Stream ist, der sich nach einem Schaden nicht wieder synchronisieren lässt. Landet die Beschädigung mitten in den IDAT-Daten statt am Ende, verliert der Decoder bei diesem Byte den Faden, und alles danach wird als Rauschen decodiert, nicht nur eine Zeile. Deshalb kostet ein Schaden mitten im Stream in der Regel jede Zeile unterhalb des Treffers, während ein sauberes Abschneiden zumindest den oberen Teil intakt lässt.

Wird mein Screenshot zum Reparieren hochgeladen?

Nein. Die Datei wird von deiner Festplatte gelesen und in deinem Browser-Tab neu aufgebaut; der Chunk-Durchlauf und die CRC-Prüfungen sind schlichter Code, der lokal läuft. Du kannst den Netzwerk-Tab öffnen und bestätigen, dass 0 Bytes das Gerät verlassen — was zählt, wenn ein Screenshot einen Kontostand, einen privaten Chat, ein Passwort oder ein Patientenportal zeigt.

Verwandt: Ein JPEG-Foto reparieren · PNG-Chunks & CRCs, erklärt · Die Zero-Upload-Aussage überprüfen