AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bild: Umwandlung in Blaustufen (nicht Graustufen)
Thema durchsuchen
Ansicht
Themen-Optionen

Bild: Umwandlung in Blaustufen (nicht Graustufen)

Ein Thema von BlueStarHH · begonnen am 2. Mai 2007 · letzter Beitrag vom 2. Mai 2007
 
grizzly

Registriert seit: 10. Dez 2004
150 Beiträge
 
Delphi XE4 Professional
 
#4

Re: Bild: Umwandlung in Blaustufen (nicht Graustufen)

  Alt 2. Mai 2007, 15:21
Hab's mal eben so versucht (Nur für 32bit Bilder):

Delphi-Quellcode:
procedure ConvertBitmap32(BM: TBitmap; NewCol: TColor);
var
  x, y : Integer;
  p : pintegerarray;
  Gray : Integer;
  r,g,b: integer;
begin
  if BM.PixelFormat <> pf32bit
    then Exit;

  // Separate desired color into RGB
  b := (NewCol and $FF0000) shr 16;
  g := (NewCol and $FF00 ) shr 8;
  r := (NewCol and $FF );

  // Change color for each pixel
  for y := BM.Height-1 downto 0 do
    begin
      p := BM.ScanLine[y];
      for x := 0 TO BM.Width-1 do
        begin
          // Determine gray value (Gray = 0.11*B + 0.50*G + 0.30*R)
          Gray := (((p^[x] and $FF) ) * 28 + // about 11% blue
                   ((p^[x] and $FF00) shr 8) * 128 + // about 50% green
                   ((p^[x] and $FF0000) shr 16) * 100) shr 8; // about 39% red
          // Gray now is between 0 and 255
          // Adjust color
          p^[x] := (((r * Gray) shr 8) shl 16 ) or
                   (((g * Gray) shr 8) shl 8 ) or
                   (((b * Gray) shr 8));
        end;
    end;
END;
NewCol bestimmt den Farbton, den das umgewandelte Bild haben soll. Für ein reines Graustufenbild muß also $00FFFFFF verwendet werden, für ein Blaustufenbild $00FF0000.
Die Bestimmung des Grauwertes folgt nur grob der von Khabarakh angesprochenen Umwandlung, aber solche Feinheiten sehen wir auf unseren unkalibrierten Monitoren eh nicht
Allerdings ergibt sich durch diese Verwendung folgender Effekt: Ein helles blau wirkt im Blaustufenbild dunkler als im Original.

Gruß
Michael
  Mit Zitat antworten Zitat
 


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 07:30 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 by Thomas Breitkreuz