![]() |
Screenshots schnell erstellen???
Ich suche nach einer Möglichkeit, möglichst schnell Screenshots zu erstellen. Das schnellste Ergebnis mit einem Bitmap-Screenshot lag bei mir bei etwa 600ms. Ich muss es irgendwie < 250ms und sogar schneller hinkriegen. Das Bild soll auch möglichst "leicht" sein, damit ich es später auf noch leichteren Teile aufteilen und übers Netz verschicken kann.
Danke für jeden Tipp! |
Re: Screenshots schnell erstellen???
Am schnellsten ging das bei mir immer mit der Taste "Druck". Komplett ohne zusätzliche Tools hab ich dann einen Screenshot in der Zwischenablage, der ist kompatibel zu allen gängigen Bildbearbeitern von Paint bis Photoshop.
Oder was meinst Du? Sherlock |
Re: Screenshots schnell erstellen???
|
Re: Screenshots schnell erstellen???
Ich meine, ich muss diese Screenshots automatisiert mind. 4x pro Sekunde erstellen und bearbeiten können.
|
Re: Screenshots schnell erstellen???
Er will wahrscheinlich den Desktop "filmen" und live über das Internet auf einen anderen Rechner übertragen.
|
Re: Screenshots schnell erstellen???
@Luckie
Ja, so was ähnliches. Die Funktion von Sakura läuft bei mir verdammt langsam (hat Vista was damit zu tun?), die erstellung eines Screenshots dauert ca. 5-8 Sekunden. |
Re: Screenshots schnell erstellen???
Ich glaube, so wirst du nicht weitkommen. Wesentlich effektiver wäre es immer nur die Veränderungen zu übertragen und nur alle paar Sekunden einen vollständigen Screenshot. Das ist natürlich mit etwas mehr Aufwand und Gehirnschmalz verbunden, als dein bisheriger Lösungsansatz.
Und was heißt: "So was ähnliches"? |
Re: Screenshots schnell erstellen???
OT
Zitat:
nichts für ungut ... war nur ins blaue geraten Für alle anderen Zwecke würde ich einen in die Anwengung eingebetteten VNC Server empfehlen |
Re: Screenshots schnell erstellen???
Hat mit dem Trojaner gar nichts zu tun.
Es gibt genügend fertige Lösungen für das was ich vor habe. Aber lernen kann man nur, wenn man selbst versucht, etwas zu erreichen. (Fast) für alles, was wir hier programmieren gibt es eine fertige Lösung, und trotzdem sitzen alle fleißig an der Kiste und machen die Augen kaputt. Zitat:
Zitat:
|
Re: Screenshots schnell erstellen???
Zitat:
|
Re: Screenshots schnell erstellen???
Zitat:
Hier meine vergessene ![]() |
Re: Screenshots schnell erstellen???
Zitat:
@Popov Danke! Ich schaue mir die Programme an. |
Re: Screenshots schnell erstellen???
Ich hänge immer noch an der Erstellung der Screenshots und bin immer noch auf der Suche nach einer Methode, schnell und ressourcenschönend Bildschirm-Screenshots zu erstellen. Hat jemand noch Ideen?
|
Re: Screenshots schnell erstellen???
Also ich hab bisher einfach ein DC geholt mit GetDC() und dann mit bitblt in ein Bitmap kopiert ....
Ich weiß nicht ob es noch wersentlich schneller gehen kann, aber du kannst ja mal geschwindigkeitsmessungen machen ;) So jede Funktion 10000 mal durchlaufen lasen und die zeit messen ;) Evtl. ist ja die screenshot-Funktion gar nicht der flaschenhals? |
Re: Screenshots schnell erstellen???
Zitat:
|
Re: Screenshots schnell erstellen???
Zitat:
Zitat:
Zitat:
Nicht böse werden, ist ein gut gemeinter Rat aus Erfahrung. ;) |
Re: Screenshots schnell erstellen???
Wo hat romber geschrieben, dass das speichern der flaschenhals ist?
Source sieht ungefähr so aus:
Delphi-Quellcode:
var
HDdc: HDC; Bild: TBitmap; const CopyWidth = 800; CopyHeight = 565; // Vorbereitungen HDdc := GetDC(0); Bild := TBitmap.Create; Bild.PixelFormat := pf24bit; Bild.SetSize(CopyWidth, CopyHeight); // Vorbereitungen abgeschlosen // Kopieren BitBlt(Bild.Canvas.Handle, 0, 0, CopyWidth, CopyHeight, HDdc, 0, 0, SRCCOPY); //Nachbereitungen ReleaseDC(0, HDdc); Bild.Free; |
Re: Screenshots schnell erstellen???
Zitat:
Und ein Beispiel brauche ich nicht, um die Code zu kopieren oder so. Ich habe schon mehrere Screenshot-Funktionen selbst gebastelt, auch mit BitBlt und bin mit dem Ergebnis unzufrieden. |
Re: Screenshots schnell erstellen???
Hallo,
ein kleines Problem ist bei Screenshots Vista. Weil die Graphik über den Desktop Window Manager läuft, funktioniert der DC des Desktops sehr langsam. Microsoft rät davon ab, das zu benutzen (insbesondere auf den Desktop zu zeichnen, ist elend langsam). Allerdings kenne ich keine Alternative. Gruß xaromz |
Re: Screenshots schnell erstellen???
Die Methode von jfheins ist z. Z. die schnellste Methode, die ich getestet habe, gerade mit Vista. Das Problem ist, dass dise Methode ganauso wie alle die ich getestet habe sehr ressourcenfressend ist. In den Moment, wo das Screenshot erstellt wird, friert das ganze System, auch wenn nur für einen Sekundenbruchteil. Wenn ich z.B. eine Funktion erstelle, wo die Screenshots in einer langen Schleife erstellt werden müssen, dann "zittern" das ganze System. Was könnte man dagegen tun?
|
Re: Screenshots schnell erstellen???
Moin, Moin.
Mal abgesehen von der Geschwindigkeit: Liefert BitBlt() bei Verwendung des HDC unter VISTA und aktiviertem AeroGlass überhaupt ein korrektes Bild? Habe selbst auch das Problem, kann es aber nicht selbst testen, da mir zum Programmieren kein VISTA-System zur Verfügung steht (auf einer VM konnte ich den Aero-Effekt nicht aktivieren, da die Graphikemulation der VM offenbar nicht schnell genug ist) |
Re: Screenshots schnell erstellen???
Zitat:
|
Re: Screenshots schnell erstellen???
Ich kann acuh nicht bestätigen, dass Screenshots unter Vosta langsamer sind als unter XP. :gruebel:
Und Dank des neuen Window-Managers sind auf den Screenshots auch halbtransparente und Direct3D-fenster zu sehen. |
Re: Screenshots schnell erstellen???
Danke für die Info, dann wird der Fehler in MEINEM Programm wohl woanders liegen.
|
Re: Screenshots schnell erstellen???
Hat jemand Ideen, warum das System während der Screenshot-Erstellung friert und was dagegen zu unternehmen ist?
|
Re: Screenshots schnell erstellen???
Zitat:
|
Re: Screenshots schnell erstellen???
Für die Erstellung der Screenshot benutze ich die Funktion, die jfheins vorgeschlagen hat.
Delphi-Quellcode:
Es friert auch bei dem einzelchen Screenshot ein, nur man merkt es kaum, weils zu schnell passiert. Aber wenn ich dann mehrere nacheinander erstelle, z.B. mit einem Timer und 500ms Interval, dann merkt man sehr gut, dass das System "stottert".
var
HDdc: HDC; Bild: TBitmap; CopyWidth: integer; CopyHeight: integer; begin HDdc := GetDC(0); CopyWidth := Screen.Width; CopyHeight := Screen.Height; Bild := TBitmap.Create; Bild.PixelFormat := pf24bit; Bild.SetSize(CopyWidth, CopyHeight); BitBlt(Bild.Canvas.Handle, 0, 0, CopyWidth, CopyHeight, HDdc, 0, 0, SRCCOPY); ReleaseDC(0, HDdc); Image1.Picture.Bitmap := Bild; Bild.Free; |
Re: Screenshots schnell erstellen???
Nebeinbei ein kleiner Optimierungsvorschlag:
Das Bitmap einmal erstellen und am Schluss frei geben. |
Re: Screenshots schnell erstellen???
Danke für den Vorschlag! Wollte ich sowieso machen. Doch im vesentlichen hat sich nichts geändert.
|
Re: Screenshots schnell erstellen???
Ich kann mir zwar nicht vorstellen, dass das viel zeit kostet, aber ggf. würde es auch Sinn machen, nur einmal das Handle zu ermitteln und dann zwischenzuspeichern.
|
Re: Screenshots schnell erstellen???
Du solltest ein Screenshot in der Auflösung erstellen die du im Desktop eingestellt hast. Das macht bis zu einer halben Sekunde aus. Also statt pf24Bit -> pf32Bit. Desweiten soltlest du einfach Bitmap.Canvas.StretchDraw bzw Draw verwenden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz