Wie erstelle ich eine BMP-Datei mit reinem Python?

8

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.

    
Taras Bilynskyi 04.01.2012, 15:35
quelle

3 Antworten

8

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)

    
Eli Bendersky 04.01.2012 15:56
quelle
7

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.

    
LionKimbro 16.01.2014 03:50
quelle
3

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)

    
jsbueno 04.01.2012 15:53
quelle

Tags und Links