AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Vollständigkeit eines tImage errechnen
Thema durchsuchen
Ansicht
Themen-Optionen

Vollständigkeit eines tImage errechnen

Ein Thema von Linguini · begonnen am 21. Aug 2009 · letzter Beitrag vom 21. Aug 2009
Antwort Antwort
Linguini

Registriert seit: 19. Mai 2009
95 Beiträge
 
#1

Vollständigkeit eines tImage errechnen

  Alt 21. Aug 2009, 17:03
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

Re: Vollständigkeit eines tImage errechnen

  Alt 21. Aug 2009, 17:05
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Linguini

Registriert seit: 19. Mai 2009
95 Beiträge
 
#3

Re: Vollständigkeit eines tImage errechnen

  Alt 21. Aug 2009, 17:11
Scanlines hört sich vielversprechend an
Danke.

Ich dachte vielleicht hat da Delphi gleich eine Funktion intrigiert die genau das macht.
  Mit Zitat antworten Zitat
Linguini

Registriert seit: 19. Mai 2009
95 Beiträge
 
#4

Re: Vollständigkeit eines tImage errechnen

  Alt 21. Aug 2009, 17:39
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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#5

Re: Vollständigkeit eines tImage errechnen

  Alt 21. Aug 2009, 17:43
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Linguini

Registriert seit: 19. Mai 2009
95 Beiträge
 
#6

Re: Vollständigkeit eines tImage errechnen

  Alt 21. Aug 2009, 17:56
Die Sourcecodes hab ich mir alle angekuckt, aber ich versteh das mit dem TBitmap nicht.
Ich hab ja ein TImage.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#7

Re: Vollständigkeit eines tImage errechnen

  Alt 21. Aug 2009, 18:21
Hast du vorher ein Bild da reingeladen?
Wenn nicht, dann wird automatisch ein Bitmap erstellt.

Image.Picture.Bitmap
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Linguini

Registriert seit: 19. Mai 2009
95 Beiträge
 
#8

Re: Vollständigkeit eines tImage errechnen

  Alt 21. Aug 2009, 18:31
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).
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#9

Re: Vollständigkeit eines tImage errechnen

  Alt 21. Aug 2009, 19:58
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)
Ralf Kaiser
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:10 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