Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Farbe von Bildschirminhalt ermitteln ? (https://www.delphipraxis.net/136507-farbe-von-bildschirminhalt-ermitteln.html)

Blamaster 4. Jul 2009 15:57

Re: Farbe von Bildschirminhalt ermitteln ?
 
Hm schade habe es gerade mal mit anderen Videos versucht. Manche lassen sich garnicht laden. (programm hängt sich auf)
Bei anderen die angezeigt werden bleiben die Farbfelder weiß.

Einen unterschied zwischen fertiger und selbstcompilierter exe konnte ich nicht feststellen.

Kannst du das programm evtl. auf einen Art Screenshot Methode umbauen, dann ist dabei das Abspielmedium ja egal.

mfg Yannic

Blamaster 5. Jul 2009 12:49

Re: Farbe von Bildschirminhalt ermitteln ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

ich bin jetzt auch nochmal etwas weitergekommen :)

Im Angehängten Programm gibt es 2 Optionen einmal Scan1 und Scan2. Scan 1 beinhaltet das ganze am Anfang angetestete Prinzip.

Scan 2 funktioniert nach dem Prinzip welches ich eine Seite zuvor angedacht habe.

Währe super wenn mal jemand das programm bei sich austesten könnte. Meiner meinung nach liefer die Scan 2 Methode schon ein super Ergebnis.
(Die von mir angesprochene prozentuale Berücksichtigung des Schwarz/Weiß anteils habe ich noch nicht umgestezt, scheint aber auch garnicht nötig).

Die Geschwindigkeit liegt jetzt zumindest bei mir auch in einem angenehmen Rahmen.

Hat jemand dazu vielleicht noch Verbesserungsvorschläge ?

mfg Yannic

Edit. Das Programm scannt momentan nicht die Seitenränder sondern den Monitor Mittelpunkt.

Blamaster 19. Jul 2009 13:26

Re: Farbe von Bildschirminhalt ermitteln ?
 
So,

nach einigem geteste möchte ich nun noch eine Zusatzfunktion verbauen.

Momentan Scanne ich ja die Pixel wie folgt:

Delphi-Quellcode:
for y := 0 to Screenshot.Height - 1 do
  begin
    for x := 0 to Screenshot.Width - 1 do
    begin
      Color := WinColor(Screenshot.Pixel[x, y]);
      ColorArray_r[pixelcount] := GetRValue(Color);
      ColorArray_g[pixelcount] := GetGValue(Color);
      ColorArray_b[pixelcount] := GetBValue(Color);
      inc(pixelcount);
    end;
  end;
Problem ist nun das wenn der Screenshot beispielsweise 150 x 150 px groß ist 22500 Pixel "gescannt" werden und das ist etwas zu viel.

Deswegen wollte ich nun folgendes vorgeben. 1. Größe des Screenshots 2. Anzahl der zu "scannenden" Pixel, diese sollen dann gleichmäßig über den Screenshot verteilt werden.

Nun habe ich dabei aber ein gewaltiges Schleifenproblem.
Wie kann ich eine Schleife erstellen die die eine variable Anzahl an punkten gleichmäßig in einem in der größe variablen Quadrat scannt ?

Um überhaupt erstmal weniger pixel zu scannen hatte ich folgedes versucht:

Delphi-Quellcode:
  while y <= Screenshot.Height - 1 do
  begin
    y := y + 5;
    for x := 0 to Screenshot.Width - 1 do
    begin
      inc(pixelcount);
      Color := WinColor(Screenshot.Pixel[x, y]);

      ColorArray_r[pixelcount] := GetRValue(Color);
      ColorArray_g[pixelcount] := GetGValue(Color);
      ColorArray_b[pixelcount] := GetBValue(Color);
    end;
  end;
So wollte ich jetzt nur jede 5. Reihe der y Achse scannen was allerings zu einem Exception Error führt.

Ich hoffe jemand kann behilflich sein :)

mfg Yannic


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz