.bmp aus png Bildern erstellen

  • Lesedauer:4 min Lesezeit

Das Programm Inkscape kann Bilder leider nicht als monochrome Bitmap (.bmp), sondern nur als .png Bilder exportieren. Das ist blöd, wenn man eine monochrome Bitmap (.bmp) benötigt. Über einen kleinen Umweg ist es zum Glück kein Problem ein solches .bmp zu erzeugen, um es anschließend z.B. für das Design von PCB’s zu nutzen. Wie sowas aussehen kann könnt ihr euch im Artikel Grafik in Eagle auf ein PCB bringen ansehen. Dort habe ich gezeigt, wie ihr eine monochrome .bmp Grafik auf ein PCB aufbringen könnt, um dem PCB eine persönliche Note zu geben.

Um ein .png zu erzeugen erstellen wir zuerst ein Bild und exportieren es wie gewohnt in Inkscape als .png. Auch ein transparenter Hintergrund ist kein Problem, den berücksichtigen wir in der Nachbearbeitung. Natürlich müssen wir das Bild auch nicht auch Inkscape exportiert, es sollte auch mit jedem anderen .png funktionieren.

Python Skript um bmp aus png Bildern zu erstellen

Um jetzt ein .png aus diesem Bild zu generieren nutzen wir ein Python Skript. Das Skript is sicherlich nicht die effizienteste Möglichkeit das Bild zu konvertieren, aber es hat mir bislang gute Dienste geleistet, daher teile ich es gerne mit euch.

Bevor wir das Skript starten muss die Umgebung noch passen. Stellt sicher, dass die Bildbearbeitungs-Lib PIL vorhanden ist. Diese kann einfach über pip mit

pip install pillow

installiert werden. Danach kann das Skript ausgeführt werden.

from PIL import Image

im_path = "./pumpkin"
im = Image.open(f"{im_path}.png")
im = im.convert('RGBA')

data = im.getdata()
newData = []

for item in data:
    if item[3] == 0:
        newData.append((255, 255, 255, 255))
    else:
        newData.append(item)

im.putdata(newData)

im = im.convert('1')

im.save(f"{im_path}.bmp")

In diesem Skript geben wir am Anfang den Pfad zum .png Bild (im_path) an und lassen das Skript dann laufen. Im Skript wird zuerst sichergestellt, dass wir mit einem RGBA png weiterarbeiten. Das passiert in der Konvertierung im = im.convert('RGBA'). Anschließend sorgen wir in der for-Schleife dafür, dass der Hintergrund, falls er transparent ist, weiß wird. Um das zu erreichen erstellen wir einen neuen Daten-Array der einen weißen Punkt (255, 255, 255, 255) erhält, wenn der Pixel vorher transparent war (item[3] == 0). Andernfalls wird der alte Datenpunkt beibehalten (newData.append(item)).

Danach wird das Bild durch im = im.convert('1') in ein monochromes Bild gewandelt. Am Schluss speichern wir das Bild neben dem original Bild als .bmp ab.

Das war es auch schon. Mit diesem einfach Skript sind die .png Bilder ganz schnell in .bmp Bilder gewandelt und können z.B. in Eagle importiert werden.

Das Skript könnt ihr gerne verwenden und nach euren Wünschen anpassen. Verbesserungen nehme ich auch gerne direkt hier im Artikel mit auf.

Dieser Beitrag hat einen Kommentar

Schreibe einen Kommentar