Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Vollständigkeit eines tImage errechnen (https://www.delphipraxis.net/139007-vollstaendigkeit-eines-timage-errechnen.html)

Linguini 21. Aug 2009 16:03


Vollständigkeit eines tImage errechnen
 
Hallo,

wie kann ich am einfachsten ausrechnen wie viel Prozent eines tImage "bemalt" sind.
Also z.B. ich hab ein 200x200 Pixel tImage auf dem gemalt werden kann.
Jetzt will ich herausfinden wie viele Pixel von den 40.000 Pixel bemalt wurden.
Mir fällt nichts ein, außer jedes Pixel einzeln auf clBlack zu überprüfen(?)

Danke

himitsu 21. Aug 2009 16:05

Re: Vollständigkeit eines tImage errechnen
 
im Prinzip ist das genau so richtig

es heißt ja schließlich
Anzahl der bemalten Pixel * 100 / Anzahl aller Pixel = bemalt in Prozent

nur sollte man nicht unbedingt .Pixels zum Auslesen verwenden, sondern eher über die schnelleren .Scanline's gehn

Linguini 21. Aug 2009 16:11

Re: Vollständigkeit eines tImage errechnen
 
Scanlines hört sich vielversprechend an :)
Danke.

Ich dachte vielleicht hat da Delphi gleich eine Funktion intrigiert die genau das macht.

Linguini 21. Aug 2009 16:39

Re: Vollständigkeit eines tImage errechnen
 
Ich finde über Scanline irgendwie nichts das mir weiterhilft.

Ich hab hier ein tImage auf dem per Image1.Canvas.Pixels[] einzelne Pixel verändert werden.
Wie bearbeite ich das Image jetzt mit Scanline?

himitsu 21. Aug 2009 16:43

Re: Vollständigkeit eines tImage errechnen
 
mit .Scanline greifst du direkt auf den Speicher einer Bildzeile zu
(von unten nach oben im Bild und die Zeilen von links nach rechts)

Dabei sind die Daten aber im Speicherformat
also 24 Bit = 3 Byte pro Pixel
also 32 Bit = 4 Byte pro Pixel
8 Bit aka 256 Farben = 1 Byte pro Pixel
4 Bit aka 16 Farben = 2 Pixel pro Byte
usw.

Hier im Forum suchenScanline

Linguini 21. Aug 2009 16:56

Re: Vollständigkeit eines tImage errechnen
 
Die Sourcecodes hab ich mir alle angekuckt, aber ich versteh das mit dem TBitmap nicht.
Ich hab ja ein TImage.

himitsu 21. Aug 2009 17:21

Re: Vollständigkeit eines tImage errechnen
 
Hast du vorher ein Bild da reingeladen?
Wenn nicht, dann wird automatisch ein Bitmap erstellt.

Image.Picture.Bitmap

Linguini 21. Aug 2009 17:31

Re: Vollständigkeit eines tImage errechnen
 
Wieder einen Schritt weiter^^
Leider weiß ich nicht so Recht etwas damit anzufangen.

Image1.Picture.Bitmap.ScanLine[1];

Das müsste ja die 1. Reihe scannen. Aber was bringt mir der Pointer als Rückgabe?
Also wie kann ich dann ermitteln wieviel mal ClBlack darin vorkommt(in der 1. Reihe).

Ralf Kaiser 21. Aug 2009 18:58

Re: Vollständigkeit eines tImage errechnen
 
Zitat:

Zitat von Linguini
Ich hab hier ein tImage auf dem per Image1.Canvas.Pixels[] einzelne Pixel verändert werden.

Daraus schliesse ich, dass die Veränderung in deinem Programm vorgenommen wird. Ist das richtig? Dann könntest du immer wenn mit deinem Programm ein Pixel verändert wird diesen gleich zählen.

Oder kann sich das Image auch "von aussen" ändern - willst du also auch ein fertiges Image laden und dort die schon veränderten Pixel zählen (dann vergiss meinen Vorschlag)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:47 Uhr.

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