Kurz gesagt

BMP-Pixelzeilen können unten oder oben beginnen. Untersuchen Sie vorzeichenbehaftete Höhe und Header, verwenden Sie ein eindeutig markiertes Testbild und prüfen Sie konvertierte PNG- und JPG-Dateien, statt einen Decoderfehler durch manuelles Spiegeln zu verdecken.

Werkzeuge testen

BMP → PNG

Werkzeug öffnen

Die zwei BMP-Zeilenrichtungen erkennen

Daten eines geräteunabhängigen Windows-Bitmaps werden nicht zwingend von der sichtbaren obersten bis zur untersten Zeile gespeichert. In einem verbreiteten BITMAPINFOHEADER-Fall beschreibt eine positive Höhe ein Bottom-up-Bitmap, dessen Pixelarray mit der sichtbaren unteren Scanline beginnt. Eine negative Höhe kann ein Top-down-Bitmap beschreiben, dessen Array mit der obersten Zeile beginnt. Der Decoder muss das Vorzeichen auswerten und die gespeicherten Zeilen den Anzeige­koordinaten zuordnen. Behandelt er jedes Array als Top-down, kann das Ergebnis vertikal umgedreht erscheinen.

Erstellen Sie eine unmissverständliche Quelle: Schreiben Sie TOP an den oberen, BOTTOM an den unteren Rand und setzen Sie eine asymmetrische Form nur auf eine Seite. Erfassen Sie Breite, vorzeichenbehaftete Höhe, Bittiefe und Komprimierung aus dem Header und öffnen Sie das ursprüngliche BMP in mehreren Betrachtern. Dreht nur ein Programm das Bild, ist dessen Decoder verdächtig. Stimmen alle Programme überein, hat die erstellende Anwendung die Pixel möglicherweise falsch angeordnet oder ein unpassendes Höhenvorzeichen geschrieben.

  • Vorzeichen der Höhe untersuchen
  • Asymmetrisches Orientierungsziel verwenden
  • Mehrere BMP-Decoder vergleichen

Das Höhenvorzeichen kann die Zeilenrichtung und nicht nur die absolute Pixelhöhe übermitteln.

Zeilenfolge von anderen Orientierungsfehlern trennen

Eine vertikale Umkehrung durch die Zeilenfolge unterscheidet sich von einer Kameradrehung oder einem Exif-Orientation-Problem. Diagnostizieren Sie BMP nicht wie JPEG. Bleibt Text von links nach rechts lesbar, während oben und unten vertauscht sind, untersuchen Sie zuerst die Zeilenfolge. Eine 90-Grad-Drehung, horizontale Spiegelung oder kombinierte Transformation weist eher auf die Aufnahme­anwendung, eine frühere Konvertierung oder einen zusätzlichen Darstellungsschritt hin.

Bildschirmaufnahme-APIs und ältere Programme übertragen DIB-Speicher manchmal in eine BMP-Datei und verbinden dabei das falsche Vorzeichen mit dem Zeilenarray. Eine andere Erweiterung oder manuelles Umdrehen des Endbilds verdeckt nur das Symptom einer Datei. Dokumentieren Sie Quellanwendung, Zwischenschritte und Endkonverter und vergleichen Sie nach jeder Stufe. Können Sie aus demselben Ziel eine korrekte und eine fehlerhafte Datei erzeugen, vergleichen Sie Header, Pixeloffset und die ersten Datenzeilen direkt. Tritt der Fehler nur auf einem Rechner auf, halten Sie auch Betriebssystem, Bibliotheksversion und Hardwarepfad fest. So bleibt der Befund reproduzierbar und wird nicht mit einem zufälligen Vorschaueffekt verwechselt.

  • Umkehrung von Drehung unterscheiden
  • Jede Erstellungs- und Konvertierungsstufe verfolgen
  • Korrekte und fehlerhafte Header vergleichen

Zeilenauffüllung und Pixeloffset prüfen

BMP-Scanlines können Auffüllbytes zur Ausrichtung enthalten. Springt ein Decoder nur um die sichtbaren Pixelbytes statt um die korrekt aufgefüllte Zeilenlänge weiter, entstehen eher diagonales Wandern, Farbbänder oder abgeschnittene Zeilen als eine saubere Umkehrung. Prüfen Sie Pixel­datenoffset, Bittiefe, Breite und die berechneten Bytes pro Scanline. Breiten, die nicht von selbst auf die Speichergrenze passen, machen Auffüllfehler besser sichtbar als bequem ausgerichtete Abmessungen.

Palettenbasierte und komprimierte BMP-Varianten bringen weitere Bedingungen mit. Der Erfolg mit einer unkomprimierten 24-Bit-Probe beweist keine allgemeine Unterstützung. Enthalten Produktionsdateien 1-, 4- oder 8-Bit-Paletten, 16- oder 32-Bit-Pixel, alphaähnliche Kanäle oder Komprimierung, testen Sie jede tatsächliche Klasse. Raten Sie keine Headerpositionen und verändern Sie Bytes nicht direkt. Sicherer ist es meist, die Quelle zu bewahren, mit einer konformen Implementierung zu decodieren und eine neue Standardausgabe zu schreiben. Ändert sich das Fehlerbild schon bei einem Pixel mehr oder weniger Breite, prüfen Sie zuerst die Formel für Scanline-Länge und Ausrichtung. Ein solcher Grenztest ist aussagekräftiger als viele bequem ausgerichtete Muster.

  • Aufgefüllte Scanline-Länge berechnen
  • Ungünstig ausgerichtete Breiten testen
  • Reale Bittiefen und Palettentypen abdecken

Diagonales Wandern oder farbige Zeilen deuten oft auf Auffüll- oder Offsetfehler und nicht nur auf umgekehrte Zeilen hin.

PNG- und JPG-Ausgabe für den Zielzweck vergleichen

Die Konvertierung von BMP in PNG liefert eine verlustfreie Referenz, mit der sich Orientierung, scharfe Kanten und exakte Farben gut prüfen lassen. JPG fügt verlustbehaftete Komprimierung hinzu und besitzt keinen Alphakanal; für die Diagnose kleiner Schrift oder einzelner Randpixel ist es daher weniger geeignet. Prüfen Sie zuerst PNG. Erzeugen Sie JPG nur bei einer entsprechenden Zielanforderung und bewerten Sie JPEG-Qualität, Farbunterabtastung und Hintergrundkomposition getrennt von der Zeilenfolge.

Zeigen Sie Quell-BMP, PNG und JPG in denselben Abmessungen und vergleichen Sie Ecken, oberste Zeile, unterste Zeile und Orientierungsmarken. Achten Sie nicht nur darauf, ob das Bild aufrecht wirkt, sondern auch auf fehlende Zeilen, auffüllbedingte Farbverschiebungen und Alphaänderungen. Korrigiert ein Konverter eine widersprüchliche Quelle automatisch, dokumentieren Sie das. Ein anderes Werkzeug kann dieselbe Quelle anders auslegen, obwohl die erste Ausgabe richtig aussieht.

  • PNG als Diagnosereferenz verwenden
  • Erste und letzte Zeile vergleichen
  • Automatische Korrekturen dokumentieren

Repräsentative BMP-Typen vollständig freigeben

Bauen Sie einen Testsatz mit Top-down- und Bottom-up-Dateien, mehreren Breiten, Palettenbildern sowie den produktiv verwendeten 24- oder 32-Bit-Varianten auf. Konvertieren Sie jede Datei mit dem tatsächlichen BMP-zu-PNG- oder BMP-zu-JPG-Werkzeug und öffnen Sie die Ergebnisse in der Zielanwendung sowie einem unabhängigen Betrachter. Bestätigen Sie oben und unten, Maße, Farben, Alpha-Verhalten und vollständige Randzeilen. Neue Dateinamen und Prüfsummen verhindern, dass ein Cache ein altes Bild zeigt.

Dokumentieren Sie ursprüngliche Headerwerte, Erstellungsanwendung, Konverterversion, Ausgabeeinstellungen und Testumgebung. Speichern Sie außerdem Prüfsummen von Quelle und Ausgabe, damit bei einer späteren Kontrolle eindeutig ist, welche Fassung bewertet wurde. Reparieren Sie eine fehlerhafte Ableitung nicht durch Umdrehen und Überschreiben; kehren Sie zur Quelle zurück und decodieren Sie korrekt. Laden Sie abschließend das markierte Ziel und ein echtes Geschäftsbild in den Lieferdienst, laden Sie dessen Fassungen herunter und vergleichen Sie die Kanten. Prüfen Sie sowohl bei hundert Prozent als auch in der tatsächlichen Darstellungsgröße. Beginnen Sie die Stapelkonvertierung erst, nachdem jede erforderliche BMP-Klasse bestanden hat und ein zweiter Betrachter dasselbe Ergebnis bestätigt.

  • Beide Zeilenrichtungen testen
  • Veraltete Vorschaucaches vermeiden
  • Heruntergeladene Dienstausgabe untersuchen

Orientierungsmuster und echtes Produktions-BMP müssen bestehen, bevor ein ganzer Ordner konvertiert wird.

Das Wichtigste

  • In verbreiteten DIB-Strukturen kann eine positive Höhe Zeilen von unten nach oben und eine negative Höhe Zeilen von oben nach unten kennzeichnen.
  • Ein Decoder, der das Vorzeichen ignoriert, kann das Bild vertikal umdrehen oder je nach Anwendung unterschiedliche Ergebnisse liefern.
  • Ein asymmetrisches, beschriftetes Testbild und die Headerwerte trennen Zeilenfolgefehler von Drehungen oder Aufnahmeproblemen.
  • Nach der Konvertierung müssen Orientierung, Maße, Farbe, Zeilenauffüllung und Randzeilen im tatsächlichen Zielsystem geprüft werden.

Häufige Fragen

Warum kann BMP die unterste Zeile zuerst speichern?

Traditionelle DIB-Anordnungen können bei positiver Höhe ein Bottom-up-Array verwenden; der Decoder stellt daraus die sichtbare Reihenfolge wieder her.

Bedeutet eine negative BMP-Höhe immer Beschädigung?

Nein. In unterstützten Headerformen kann sie absichtlich ein Top-down-Bitmap kennzeichnen.

Kann ich das konvertierte Bild einfach im Editor umdrehen?

Das kann eine sichtbare Datei korrigieren, lässt aber die Quell- oder Decoderinkonsistenz bestehen, sodass spätere Dateien erneut scheitern können.

Ist diagonales Wandern ebenfalls ein Zeilenfolgeproblem?

Es spricht häufiger für eine falsch berechnete aufgefüllte Zeilenlänge oder einen Pixeloffset, die mit Breite und Bittiefe geprüft werden müssen.

Was ist die abschließende Konvertierungsprüfung?

Konvertieren Sie ein markiertes Ziel und ein echtes BMP und vergleichen Sie Orientierung, Randzeilen, Maße und Farbe in den ausgelieferten Dateien.

Quellen und Referenzen

  1. Microsoft Learn — Device-Independent Bitmaps
  2. Microsoft Learn — BITMAPINFOHEADER Structure
  3. Microsoft Learn — BMP Format Overview