Erstellen Sie ein Graustufenbild

8

Ich lese Binärdaten aus einer Datei, die Intensitätswerte über x- und y-Koordinaten angibt (kein Open-Source-Bildformat) und möchte sie in ein PNG-Bild (oder ein anderes weit verbreitetes Format) umwandeln. Ich habe die Daten in ein Array geladen (mit dem Array-Modul), wobei jedes Element eine ganze Zahl von 0 bis 255 ist. Um dies in einem PNG zu speichern, kann ich ein 3-Element-Tupel jedes Elements (x) wie folgt erstellen:

%Vor%

add Übernehmen Sie es mit der map () über das Array und speichern Sie das Bild mit putdata (). Die Umwandlung in das Array von Tupeln dauert jedoch eine lange Zeit (einige Minuten). Gibt es eine Möglichkeit, den rgb-Wert mit nur einer Ganzzahl (kein Tupel) anzugeben. Ich denke, eine Alternative wäre die Verwendung von NumPy, aber ich weiß nicht, wo ich anfangen soll, also würde jede Hilfe in diesem Zusammenhang auch geschätzt werden.

Vielen Dank im Voraus für die Hilfe.

    
Vince 21.01.2010, 17:02
quelle

3 Antworten

11

Wenn Sie das neue Bild erstellen, geben Sie ihm den Modus L:

%Vor%

Wo Daten eine Liste von Werten sind, keine Tupel.

    
Nadia Alramli 21.01.2010, 17:12
quelle
3

Hierfür gibt es mehrere Möglichkeiten. Wenn Sie die Daten jedoch bereits im Speicher haben, können Sie Image.frombuffer oder Image.fromstring mit dem 'L' -Modus (für 8-Bit-Graustufen-Daten) verwenden.

    
tkerwin 21.01.2010 17:08
quelle
0

Würde im.putputpixel (xy, color) sein, wonach Sie suchen?

    
David Sowsy 21.01.2010 17:08
quelle