Hier finden Sie Dokumentation für BMP: https://en.wikipedia.org/wiki/BMP_file_format#Pixel_array_.28bitmap_data.29
Die Kurzform lautet:
- 14 Byte BMP-Header (Dateiinformationen)
- 40 Byte DIB-Header (Bildinformationen)
- Pixel
In der DIB-Kopfzeile sehen Sie die beiden Werte 5 für die Pixelabmessungen und den Wert hex (18) für die 24-Bit-Farbe (RGB).
Von besonderem Interesse ist das "Beispiel 1" im Wiki, das einen HEX-Dump für ein 2x2-Bild zeigt, ähnlich dem, was Sie hier haben. Ein paar Anmerkungen:
- Ein Byte ist visuell ein zweistelliges Couplet (das erste Byte in Ihrem Bild ist 42).
- Die Zählung beginnt bei 0, "Offset 31" ist das 32. Byte.
- Zahlen sind alle HEX, also ein Hex (10) = Dec (16). Sie können den Windows-Rechner auf "Programmiermodus" setzen, wenn Sie Hilfe beim Konvertieren benötigen.
- "Bytereihenfolge" ist niedrig bis hoch, daher muss ein 4-Byte-Wert von "05 00 00 00" als "00 00 00 05" verstanden werden.
- Die RGB-Triolen im BMP werden umgekehrt
Basierend auf dem Hex-Dump und der Dokumentation speichert Ihr Bild jeden Pixel als unkomprimiertes RGB-Triplet. Das erste Pixel ist das Triplett 24 1c ed
, aber das ist umgekehrt, also ist es hex (ed1c24), welches tatsächlich eine rote Farbe ist. Beachten Sie, dass sich 00
nach jeder Zeile von 5 Pixeln ein Pad befindet . Die Dokumentation besagt, dass dies für "Byte-Ausrichtung" ist.
Um ein Pixel von Rot zu Blau zu ändern, können Sie eines der Triolen von 24 1c ed
bis ändern ed 1c 24
.
In Bezug auf Software würden Sie die Datei (oder eine Kopie) mit einem Hex-Editor öffnen, die Änderungen vornehmen und speichern. Die Verwendung eines Texteditors im "Textbearbeitungsmodus" reicht nicht aus, da das Textsymbol "0" nicht mit dem binären numerischen Wert von 0 identisch ist.
Open Source Notepad ++ bietet eine Hex-Bearbeitung über Plugins.
Bei der größeren Frage, wie Paint ein Bild gut macht, verwendet das Programm die Dokumentation und Standards, um den Prozess zu automatisieren. Es ist meistens eine Frage der Konvention. Der "Bildstrom" (Pixeldaten) wird auf ähnliche Weise wie in der unkomprimierten Bilddatei im Speicher gespeichert und bearbeitet.