Ich brauche die Farbe einiger Pixel auf dem Bildschirm oder aus dem aktiven Fenster, und das muss ich schnell tun. Ich habe versucht, win32gui und ctypes / windll, aber sie sind viel zu langsam. Jedes dieser Programme erhält die Farbe von 100 Pixel:
%Vor%und
%Vor%Jeder von diesen dauert etwa 1,75 Sekunden. Ich brauche ein Programm wie dieses, um weniger als 0.1 Sekunden zu nehmen. Was macht es so langsam?
Ich arbeite mit Python 3.x und Windows 7. Wenn Ihre Lösung erfordert, dass ich Python 2.x verwende, verlinke mich bitte mit einem Artikel, der zeigt, wie Python 3.x und 2.x beide installiert werden. Ich schaute, aber konnte nicht herausfinden, wie das geht.
Danke!
Ich hatte genau das gleiche Problem und löste es ( in Java , in C # ). Der Grundgedanke hinter der Lösung ist GetPixel vom Bildschirm ist langsam, und Sie können das nicht beheben. Aber da Sie einige Pixel benötigen, können Sie eine Menge von ihnen auf einmal bekommen.
Die Zeit, die benötigt wurde, um 64 Pixel zu bekommen, war 98 mal schneller.
Dank Margus 'Richtung konzentrierte ich mich darauf, das Bild zu erhalten, bevor ich die Pixelinformationen extrahierte. Hier ist eine praktikable Lösung mit der Python Imaging Library (PIL) , die Python 2.x benötigt.
%Vor%Ich glaube nicht, dass es einfacher wird. Dies dauert (im Durchschnitt) 0,1 Sekunden, was etwas langsamer ist, als ich möchte, aber schnell genug.
Da Python 3.x und 2.x beide installiert wurden, habe ich das in neue Frage . Ich habe immer noch Probleme damit, aber es funktioniert im Allgemeinen.
Das ist besser, als getpixel
die ganze Zeit zu benutzen und arbeitet schneller.
Referenz: Image.load
Durch das Deaktivieren der Windows Desktop Composition wird das Lesen von Pixeln beschleunigt A LOT .
Computer - & gt; Eigenschaften - & gt; Erweiterte Systemeinstellungen - & gt; Leistung - & gt; desktop composition [] (Warnung: Deaktiviert die Transparenzeffekte von Windows)
Python 2.7 (Sollte für 3.x gleich sein)
%Vor%AutoIt zum Vergleich
%Vor%