![]() |
Graustufen in einem Bild farbig markieren
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich möchte eine Methode schreiben die bestimmte Graustufen mit einer Farbe markiert, in diesem Fall sollen alle Graustufen zwischen 200 und 255 mit rot markiert werden. Leider scheint das irgendwie nicht zu klappen (siehe Anhang). Hat Jemand eine Idee woran das liegen könnte?
Delphi-Quellcode:
Var
lBitmap : TBitmap; x, y, z : Integer; P : PRGBQuad; Begin img_Changed.Picture.Assign(Nil); lBitmap := TBitMap.create; Try lBitmap.Assign(CacheBitmap); for y := 0 to lBitmap.Height - 1 do begin P := lBitmap.ScanLine[y]; for x := 0 to lBitmap.Width - 1 do begin for z := 200 to 255 do begin If ( P^.rgbRed = z ) AND ( P^.rgbGreen = z ) AND ( P^.rgbBlue = z ) Then Begin P^.rgbRed := z; P^.rgbGreen := 0; P^.rgbBlue := 0; end; Inc(P); end; End; img_Changed.Picture.Assign(lBitmap); Finally lBitmap.Free; End; |
Re: Graustufen in einem Bild farbig markieren
was funktioniert nicht? kommt ein fehler?
desweiteren finde ich zu
Delphi-Quellcode:
nicht das schließende "End"
If ( P^.rgbRed = z ) AND ( P^.rgbGreen = z ) AND ( P^.rgbBlue = z ) Then
Begin anstelle von
Delphi-Quellcode:
würde ich dir auch empfehlen einfach diese Anweisung
for z := 200 to 255 do
Delphi-Quellcode:
abzuändern das sie so aussieht
for z := 200 to 255 do
begin If ( P^.rgbRed = z ) AND ( P^.rgbGreen = z ) AND ( P^.rgbBlue = z ) Then
Delphi-Quellcode:
damit spaarst du dir die schleife und das "z" (wird dadurch schneller das ganze)
if (P^.rgbRed >= 200) and (P^.rgbRed <= 255) and
(P^.rgbRed = P^.rgbGreen) and (P^.rgbRed = P^.rgbBlue) then |
Re: Graustufen in einem Bild farbig markieren
Du musst unbedingt noch die Farbtiefe des Bitmaps festlegen!
Delphi-Quellcode:
lBitmap.Assign(CacheBitmap);
lBitmap.PixelFormat := pf32bit; |
Re: Graustufen in einem Bild farbig markieren
hallo,
danke für deine antwort, nein ein fehler kommt nicht, ich hab den code nun nach deinen vorschlägen abgeändert, das problem das nicht alle graustufen ersetzt wurden lag daran das ich die farbtiefe nicht festgelegt hatte danke euch beiden, nun funktioniert es =) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 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