In Python, wie kann ich das zeichnen eines pixels auf dem Bildschirm direkt?
Ich bin zu wollen tun Sie etwas wie das folgende:
...
pixel[0,0] = [ 254, 0, 0 ] # Draw R at pixel x0y0
pixel[2,1] = [ 0, 254, 0 ] # Draw G at pixel x2y1
pixel[4,2] = [ 0, 0, 254 ] # Draw B at pixel x4y2
...
Ich hoffe, dass ich viele verschiedene Konfigurationen von Pixel und Farben, die in einem kurzen Raum der Zeit-schreiben an einen Vermittler Datei wäre zu teuer.
Wie sollte ich am besten gehen Sie über die Erreichung dieses Ziels in Python?
- Im Allgemeinen werden Sie nicht wollen, zu schreiben "der Bildschirm" möchten Sie in ein Fenster schreiben. Python enthält keine built-in-Pakete zur Interaktion mit einem Fenster, die Sie brauchen zu wählen, und etwas installieren.
- Recht. Ein randloses Fenster wäre auch akzeptabel.
- Wenn Sie wüssten, wie Sie auf dieses schreiben auf, können Sie die Datei in den Speicher schreiben, mit
cStringIO
, obwohl ich nicht glaube, dass das der Fall ist. - Lösegeld: Mit tkinter, können Sie erstellen und anzeigen von windows. Built-in.
- Verwandte: Wie die Anzeige von text auf dem Bildschirm ohne ein Fenster mit Python
Du musst angemeldet sein, um einen Kommentar abzugeben.
Direkte Antwort:
Dies ist nur mit OS-spezifische APIs. Einige Betriebssysteme nicht erlauben das verändern von Pixel auf dem Bildschirm direkt.
Unter Windows, die Sie verwenden können, pywin32 Bibliotheken zu erhalten Bildschirm-Gerätekontext mit
dc = GetDC(0)
nennen, dann malen Sie die Pixel mitSetPixel(dc, x, y, color)
.Natürlich, was Sie malen diese Weise gelöscht werden können, in jedem moment.
Richtige Antwort:
Malen, pixel für pixel, ist die langsamste Art, um etwas zu malen. Zum Beispiel auf Windows, die Schaffung eines Bildes im Speicher, dann malen Sie in einem Betrieb ist um eine Größenordnung schneller als die Malerei mit SetPixel.
Wenn du Geschwindigkeit brauchst, verwenden einige Benutzer-interface-Bibliothek für python, zum Beispiel Tkinter-Modul oder PyQt. Erstellen Sie ein Fenster und das Bild im Speicher, dann malen Sie das Bild auf dem Fenster. Wenn Sie brauchen, um Pixel manipulieren, manipulieren Sie das Bild und streichen jedes mal.
Ich bin nicht sicher, ob ich Ihre Frage richtig, aber ich glaube, Sie sollten untersuchen einige Frameworks oder middleware, die Ihnen einen Zugang zu dem Bildschirm. Ich würde sagen, PyGame oder Pyglet oder vielleicht sogar ein Panda. Es kann sein, übertrieben ein bisschen, weil Pygame und Panda ist ein framework, mit denen Sie entwickeln Spiel, während Pyglet ist wrapper um Opengl in python, aber es können Sie Steuern, Pixel, windows und ähnliche mit einfach.
Obwohl es nicht genau das, was Sie sagen (malen, "pixel"), ich mag die Verwendung von Python, GTK und Cairo.
In diesem Fall erstellen Sie ein GTK-Fenster, fügen Sie eine Zeichenfläche erstellen Sie ein Cairo-Kontext, und tun malen Operationen.
Der Unterschied ist, dass Sie eine kontinuierliche Leinwand mit Fließkomma-Koordinaten, und statt der Pixel, das Sie zeichnen geometrische Formen mit Konturen und Flächen. Man könnte sogar zeichnen von Rechtecken ein-pixel-Größe, und füllen Sie Sie, aber nicht so schnell.
Können, können Sie auch nehmen Sie jedes raster-Objekt (Bild, pixbuffer) und render es auf einmal. Dann könnten Sie erzeugen Bilder in schneller Folge, und machen seine Pixel auf einmal, ähnlich wie ein Film.
Als ein Beispiel gesehen werden kann, in einer früheren Antwort hier (zweite snippet):
Schnellste Weg, um loszulegen mit Kairo
Empfehle ich Ihnen die Pygame-Bibliothek. Es ist ein cross-Plattform-Bibliothek gut geeignet für Allgemeine computer-Grafik-und game-Entwicklung.
Überprüfen Sie hier einige Beispiele von Pygame in Aktion.
Die Bibliothek ist Recht einfach, aber wirkungsvoll. Sie können zeichnen in einem Fenster und im Vollbild-als auch.