Ich muss eine schwarz-weiße BMP-Datei mit reinem Python erstellen.
Ich habe einen Artikel auf Wikipedia gelesen, BMP-Dateiformat , aber ich bin nicht gut im Low-Level-Programmieren und möchte das auch füllen Sie diese Lücke in meinem Wissen.
Die Frage ist also: Wie erstelle ich eine schwarz-weiße BMP-Datei mit einer Pixelmatrix? Ich muss dies mit reinem Python tun, ohne irgendwelche Module wie PIL zu verwenden. Es ist nur für meine Ausbildung.
construct ist eine reine Python-Bibliothek zum Analysieren und Erstellen von Binärstrukturen, Protokollen und Dateiformaten. Es hat eine BMP-Formatunterstützung von Anfang an.
Dies könnte ein besserer Ansatz sein, als es mit struct
manuell zu erstellen. Außerdem wirst du eine Chance haben, eine wirklich nützliche Bibliothek zu lernen (welche construct
sicherlich ist)
Dies ist eine vollständige Antwort für monochrome Bitmaps.
%Vor%Zum Beispiel:
%Vor%Also, dies als eine Reihe von Zeilen zu kodieren:
%Vor%Rendere es mit:
%Vor%Beachten Sie, dass der Programmierer dafür verantwortlich ist, dass die erforderliche Anzahl an Bytes in jeder gelieferten Zeile vorhanden ist.
Die schwarze Farbe wird im \ xff \ xff \ xff angegeben und die weiße Farbe wird im folgenden \ x00 \ x00 \ x00 angegeben, falls Sie sie ändern möchten.
Sie müssen Pythons struct
Modul verwenden, um die binären Header zu erstellen, die die BMP-Datei benötigt. Bewahren Sie die Bilddaten selbst in einem bytearray
-Objekt auf - Bytearray ist ein wenig bekannter nativer Python-Datentyp, der sich wie C-Strings verhalten kann: haben veränderbare Bytes, die vorzeichenlose Zahlen von 0-255 an jeder Position akzeptieren, können trotzdem gedruckt und verwendet werden eine Zeichenfolge (zum Beispiel als Argument für file.write).
Hier ist ein kleines Programm, das struct und andere Werkzeuge verwendet, um ein Bild zu erstellen und es als reine TGA-Datei in reinem Python zu schreiben: Ссылка (es verwendet keine Bytearrays, sondern ein Python-Array-Modul (was auch interessant ist)