Wie .png-Grafiken erstellen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
tanneg
User
Beiträge: 7
Registriert: Sonntag 29. April 2007, 22:04

Hallo zusammen.

Ich habe da mal eine Frage:

Als Python-Neuling suche ich nun schon länger nach einer einfachen Möglichkeit Grafiken (Linien, Balken, Punkte, Texte in beliebigen Farben) programmgesteuert zu erzeugen und als PNG-Datei (alternativ auch GIF oder JPG) zu speichern. Das Python-Script, dass diese Grafiken erzeugen soll, benutzt keine grafische Oberfläche. Turtle scheint mir nicht geeignet...

Hat da jemand Ideen???

Danke im Voraus
tanneg
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Wie waere es mit der PIL (Python Imaging Library)?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

tanneg hat geschrieben:Grafiken (Linien, Balken, Punkte, Texte in beliebigen Farben) programmgesteuert zu erzeugen und als PNG-Datei (alternativ auch GIF oder JPG) zu speichern.
Hi tanneg!

Zusätzlich zur PIL kann wxPython auch zum Zeichnen herangezogen werden. Hier ein Beispiel mit wxPython 2.8.3 und dem neuen GraphicsContext:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import wx


def main():
    
    # Es muss immer eine wxPython-Applikation geben
    app = wx.PySimpleApp()
    
    # Bitmap und DC (Device Context) erstellen
    bitmap = wx.EmptyBitmap(width = 100, height = 100)
    dc = wx.MemoryDC(bitmap) # Dieser DC zeichnet nur im Speicher
    
    # Hintergrund gelb ausmalen
    dc.SetBackground(wx.Brush("yellow", wx.SOLID))
    dc.Clear()
    
    # GraphicsContext erstellen (damit sehen die Bilder besser aus)
    gc = wx.GraphicsContext_Create(dc)
    
    # Blauen Stift zuweisen
    pen = wx.Pen(colour = "blue", width = 2, style = wx.SOLID)
    gc.SetPen(pen)
    
    # Kreis zeichnen
    gc.DrawEllipse(x = 10, y = 10, w = 80, h = 80)
    
    # Grünen Stift zuweisen
    pen = wx.Pen("green", 4, wx.SOLID)
    gc.SetPen(pen)
    
    # Zwei horizontale Linien zeichnen
    gc.DrawLines(((0, 40), (100, 40)))
    gc.DrawLines(((0, 60), (100, 60)))
    
    # Bitmap vom DC abtrennen und als PNG speichern
    dc.SelectObject(wx.NullBitmap)
    bitmap.SaveFile("new_image.png", wx.BITMAP_TYPE_PNG)


if __name__ == "__main__":
    main()
Bild

mfg
Gerold
:-)

Suchworte: Bild Image zeichnen Grafik wxPython
Zuletzt geändert von gerold am Freitag 13. Juli 2007, 15:00, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
tanneg
User
Beiträge: 7
Registriert: Sonntag 29. April 2007, 22:04

Hallo

...und danke für die Tipps. ich glaube PIL ist genau das richtige!!! Die Grafiken zu erstellen ist mit PIL wirklich einfach.

Und gleich noch eine Frage dazu. Kann man das Antialiasing der Schriften (Methode draw.text(...)) abstellen? Ich habe in der Doku leider nichts gefunden...

Danke
tanneg
Bernhard
User
Beiträge: 136
Registriert: Sonntag 15. Januar 2006, 20:31
Wohnort: Greifswald
Kontaktdaten:

Nur für die, die den Thread später lesen:
Antwort folgte hier:
http://www.python-forum.de/topic-10501. ... 2c59be2154
Antworten