En Python, comment puis-je tirer d'un pixel sur l'écran directement?
Je suis désireux de faire quelque chose comme ce qui suit:
...
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
...
J'espère pour afficher beaucoup de différentes configurations de pixels et de couleurs dans un court espace de temps -- l'écriture dans un fichier intermédiaire serait trop cher.
Comment dois-je mieux est d'aller sur la réalisation de cet objectif en Python?
En général, vous ne voulez pas écrire à "l'écran", vous voulez écrire à une fenêtre. Python ne comprend pas tout intégré dans des packages pour interagir avec une fenêtre, vous aurez besoin de choisir et d'installer quelque chose.
La droite. Une fenêtre sans bordure serait également acceptable.
Si vous saviez comment cette écriture dans le fichier, vous pouvez écrire à mémoire à l'aide de
Rançon: Avec tkinter, vous pouvez créer et afficher des fenêtres. Built-in.
Connexes: Comment afficher du texte sur l'écran, sans fenêtre à l'aide de Python
La droite. Une fenêtre sans bordure serait également acceptable.
Si vous saviez comment cette écriture dans le fichier, vous pouvez écrire à mémoire à l'aide de
cStringIO
, bien que je ne pense pas que ce soit le cas.Rançon: Avec tkinter, vous pouvez créer et afficher des fenêtres. Built-in.
Connexes: Comment afficher du texte sur l'écran, sans fenêtre à l'aide de Python
OriginalL'auteur Matthieu Cartier | 2011-09-28
Vous devez vous connecter pour publier un commentaire.
Réponse directe:
Cela ne peut être fait avec les OS des Api spécifiques. Certains Systèmes d'exploitation ne permettent pas de changer les pixels sur l'écran directement.
Sur Windows, vous pouvez utiliser pywin32 bibliothèques pour obtenir l'écran de contexte de périphérique avec
dc = GetDC(0)
appel, puis peindre les pixels avecSetPixel(dc, x, y, color)
.Bien sûr, ce que vous avez de la peinture de cette façon peuvent être effacés à tout moment.
Bonne réponse:
Peinture pixel par pixel est la façon la plus lente de peindre quelque chose. Par exemple, sur Windows, la création d'une image en mémoire, puis de le peindre en une seule opération est de l'ordre de grandeur plus rapide que la peinture avec SetPixel.
Si vous avez besoin de vitesse, l'utilisation de l'interface utilisateur de la bibliothèque pour python, par exemple, le module Tkinter ou PyQt. Créer une fenêtre et de l'image dans la mémoire, puis peindre l'image sur la fenêtre. Si vous avez besoin de manipuler des pixels, de les manipuler à l'image et à la repeindre à chaque fois.
OriginalL'auteur hamstergene
Je ne sais pas si je reçois votre question, mais je crois que vous devriez vous pencher sur quelques-cadre ou le middleware qui vous donnent un accès à l'écran. Je dirais PyGame ou Pyglet ou peut-être même Panda. Il est peut-être exagéré un peu, parce que Pygame et Panda est un cadre qui vous permettent de développer du jeu tout en Pyglet est wrapper pour Opengl en python, mais il vous permettra de contrôler pixels, windows et même avec facile.
OriginalL'auteur Drachenfels
Bien qu'il n'a pas pétantes ce que vous dites (de la peinture "par pixel"), j'aime utiliser Python, GTK et le Caire.
Dans ce cas, vous créez une Fenêtre GTK, ajoutez une DrawingArea, créer un le Caire contexte, et faire de la peinture opérations.
La différence, c'est que vous avez un continu toile avec virgule flottante coordonnées, et au lieu de pixels vous dessiner des formes géométriques avec des traits et des remplissages. Vous pouvez même dessiner des rectangles d'un pixel de taille, et de les remplir, mais qui ne serait pas si rapide.
Aussi, vous pouvez prendre n'importe quel objet raster (image, pixbuffer) et de les rendre à la fois. Ensuite, vous pouvez générer des images en rafale, et de rendre ses pixels à la fois, semblable à un film.
Un exemple peut être vu dans une précédente réponse ici (deuxième extrait):
le moyen le plus rapide pour commencer avec le caire
OriginalL'auteur heltonbiker
Je vous recommande la bibliothèque Pygame. C'est une croix-plate-forme de bibliothèque bien adapté pour la générale d'infographie, et le développement d'un jeu.
Vérifiez ici quelques exemples de Pygame dans l'action.
La bibliothèque est assez simple mais puissant. Vous pouvez dessiner dans une Fenêtre, et en plein écran.
OriginalL'auteur Leonel Machava