Wie erstelle ich ein Bitmap-Bild mit "Stift und Papier"?

1964
P. Ktinos

Dies ist der Hex-Dump einer 5x5-Bitmap mit der Farbe Rot:

Wie erstelle ich ein Bitmap-Bild mit

Meine Frage ist, wie kann ich nur die Hex-Werte ändern (ohne ein Werkzeug wie Paint zu verwenden), um die Farbe der Bitmap auf z. B. die Farbe Grün (0,255,0)oder eine beliebige Farbe für diese Angelegenheit zu ändern ?

Wie konvertieren Werkzeuge wie Paint die von Ihnen gezeichneten Pixel in Hex, um die Bitmap zu speichern?

0

1 Antwort auf die Frage

2
Yorik

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 00nach 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 edbis ä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.

Oh, du hast recht. Ich war am Anfang verwirrt, weil 1) der zufälligen "00" s und 2) die umgekehrten Hex-Farbwerte waren, aber unter Verwendung eines Hex-Editors ersetzte ich alle "24 1C ED" durch "00 FF 00", um das Bild auszutauschen , und mein Beispielziel (Ändern der Farbe von Rot zu Grün) wurde erreicht. Vielen Dank. P. Ktinos vor 7 Jahren 0
Kein Problem. Die Dokumente sagen etwas über "Auffüllen für 4-Byte-Ausrichtung" und eine vollständige Zeile von 5 Pixeln plus 1 Byte Auffüllung = 16 Byte (oder 4 Sätze von 4). Die Auffüllung variiert also zwischen 0 und 3 Bytes. Yorik vor 7 Jahren 0
sie nennen die Bytereihenfolge "endianness". Ich glaube, das Beispiel ist hier "Little Endian". Wenn ich mich erinnere, war Endianness ein Problem bei der Wiederverwendung von Code zwischen alten Macs und alten PC-Designs, das die Leute daran hinderte, sich die Zeit zu nehmen, um Software plattformübergreifend zu machen. Yorik vor 7 Jahren 0