AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

mit scanline bitmap auf farben scannen

Ein Thema von ToXiC · begonnen am 2. Feb 2009 · letzter Beitrag vom 4. Feb 2009
Antwort Antwort
Seite 1 von 2  1 2      
ToXiC

Registriert seit: 28. Okt 2007
52 Beiträge
 
Delphi 2005 Personal
 
#1

mit scanline bitmap auf farben scannen

  Alt 2. Feb 2009, 15:09
hallo zusammen
ich habe ein bitmap, welches ich auf die farbe schwarz scannen will
ist es komplett schwarz return true
sonst false
so weit so gut
mir wurde scanline empfolen, da dieses relativ schnell sein soll
ich habe bereits einen guten ansatz welcher bei 15 der 16 getesteten bitmaps den richtigen wert zurückggibt
nun frage ich mich natürlich wo der fehler liegt
ich hatte kein glück bei der suche, genau wie alle anderen, die ich zu dem problem befragt hab
hier ist der ansatz:

Delphi-Quellcode:
function NotBlack(bmp: TBitmap): Boolean;
type
  pRGBTripleArray = ^TRGBTripleArray;
  TRGBTripleArray = Array[0..4095] Of TRGBTriple;

var
  x,y: Integer;
  Row: pRGBTripleArray;
begin
Result := False;
For y := 0 To bmp.Height -1 Do
  Begin
  Row := bmp.Scanline[y];
  For x := 0 To bmp.Width -1 Do
    Begin
    If (Row[x].rgbtRed <> 0) Or (Row[x].rgbtGreen <> 0) Or (Row[x].rgbtBlue <> 0) Then
      Begin
      Result := True;
      Exit;
      End;
    End;
  End;
end;
irgentwelche vorschläge?

achja hier is das bild noch angelegt welches den falschen wert zurückgibt

danke
Angehängte Grafiken
Dateityp: bmp blaaa1-4_219.bmp (62,6 KB, 31x aufgerufen)
Chris
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: mit scanline bitmap auf farben scannen

  Alt 2. Feb 2009, 15:22
Was gibt Deine Funktion denn zurück? True, da das Bild nicht komplett schwarz ist, oder täusche ich mich?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
ToXiC

Registriert seit: 28. Okt 2007
52 Beiträge
 
Delphi 2005 Personal
 
#3

Re: mit scanline bitmap auf farben scannen

  Alt 2. Feb 2009, 15:46
genau
Chris
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: mit scanline bitmap auf farben scannen

  Alt 2. Feb 2009, 15:47
Hallo!

Vielleicht ist es keine BMP mit 24 Bit?

Die BSP.Datei ist ja auch nicht ganz schwarz..

Oder habe ich jetzt etwas falsch verstanden?

Frank
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: mit scanline bitmap auf farben scannen

  Alt 2. Feb 2009, 16:06
Eben, sobald das erste nichtschwarze Pixel gefunden wird, bricht die Funktion ja ab und gibt true zurück.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#6

Re: mit scanline bitmap auf farben scannen

  Alt 2. Feb 2009, 16:06
@mavarik: Die function solte bei dem Bild den Wert false zurückliefern, da das Bild ja nicht komplet schwarz ist. Sie liefert aber true.
[edit] mist. roten Kasten überklickt... [/edit]
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: mit scanline bitmap auf farben scannen

  Alt 2. Feb 2009, 16:07
Die Funktion heißt aber "NotBlack" und arbeitet auch so.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#8

Re: mit scanline bitmap auf farben scannen

  Alt 3. Feb 2009, 09:49
Zitat von DeddyH:
Die Funktion heißt aber "NotBlack" und arbeitet auch so.
Bei obigem Bild aber nicht, da müsste die Function so aussehen:
Delphi-Quellcode:
function NotBlack(bmp: TBitmap): Boolean;
const
  PixelCountMax = 32768;

type
  pRGBQuadArray = ^TRGBQuadArray;
  TRGBQuadArray = ARRAY[0..PixelCountMax-1] OF TRGBQuad;

var
  x, y : Integer;
  Row : pRGBQuadArray;

begin
  Result := False;

  for y := 0 to bmp.Height -1
  do begin
    Row := bmp.Scanline[y];
    
    for x := 0 To bmp.Width -1
    do begin
      Result := (Row[x].rgbBlue <> 0) or (Row[x].rgbGreen <> 0) or (Row[x].rgbRed <> 0);

      if Result then Exit;
    end;
  end;
end;
Nachtrag:

Das Pixelformat ist hier pf32bit. Deshalb wird bei Scanline 8 bit zu wenig gelesen und die Function kommt tatsächlich gar nicht bis zu den andersfarbigen Pixeln. Das vierte Byte ist reserviert.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
ToXiC

Registriert seit: 28. Okt 2007
52 Beiträge
 
Delphi 2005 Personal
 
#9

Re: mit scanline bitmap auf farben scannen

  Alt 3. Feb 2009, 11:05
wow danke
ich werds gleich mal testen
aber warum

PixelCountMax = 32768; wie kommst du auf diesen wert?
Chris
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: mit scanline bitmap auf farben scannen

  Alt 3. Feb 2009, 11:26
2^15=32678
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:02 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