AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Kontrast von einem Bitmap erhöhen
Thema durchsuchen
Ansicht
Themen-Optionen

Kontrast von einem Bitmap erhöhen

Ein Thema von axelf98 · begonnen am 1. Sep 2007 · letzter Beitrag vom 1. Sep 2007
Antwort Antwort
axelf98

Registriert seit: 27. Aug 2003
Ort: Ennepetal
440 Beiträge
 
Delphi 2005 Personal
 
#1

Kontrast von einem Bitmap erhöhen

  Alt 1. Sep 2007, 10:59
Hallo,

ich habe schon gesucht und leider nichts dazu gefunden: Ich würde gerne den Kontrastwert eines TBitmap erhöhen können, am besten mit einer Funktion (keine Komponente)..

Danke für eure Tipps!
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Kontrast von einem Bitmap erhöhen

  Alt 1. Sep 2007, 11:33
Zitat:
Um den Kontrast eines Bitmaps zu erhöhen bzw. verringern bringen wir erst einmal alle Farbwert auf den gleichen Wert, indem wir sie zunächst in Integer-Variablen umwandeln und dann 128 abziehen. Die Ergebnisse multiplizieren wir dann mit einem Konstanten Wert. Dieser wird als Parameter in unserer Prozedur angegeben. Nachfolgend wird die Nominierung der Farbwerte durch eine Addition von 128 wieder aufgehoben. Damit wir nicht jedes Pixel einzeln bearbeiten müssen, verwenden wir ein Array, in dem wir die Farbwerte vorberechnen.

Zuerst ist folgende Typenvereinbarung erforderlich:

Delphi-Quellcode:
type
  TRGBArray = array[0..0] of TRGBTriple;
  pRGBArray = ^TRGBArray;
Dies ist der Code:

Delphi-Quellcode:
procedure Kontrast(const Bitmap: TBitmap; value: byte);
var x,y,k: integer;
    Ziel,Quelle: ^TRGBTriple;
    Farbarray: array[0..255] of byte;
    faktor: single;
begin
  faktor := 1 + value /100;
  for x := 0 to 255 do
  begin
    k := Round((integer(x) - 128)*faktor) + 128;
    if k > 255 then Farbarray[x] := 255
    else
    if k < 0 then Farbarray[x] := 0
    else Farbarray[x] := k;
  end;
  for y := 0 to Bitmap.Height-1 do
  begin
    Ziel := Bitmap.Scanline[y];
    Quelle := Bitmap.Scanline[y];
    for x := 0 to (Bitmap.Width-1) do
     begin
      Ziel^.rgbtred := Farbarray[Quelle^.rgbtred];
      Ziel^.rgbtblue := Farbarray[Quelle^.rgbtblue];
      Ziel^.rgbtgreen := Farbarray[Quelle^.rgbtgreen];
      inc(ziel);
      inc(quelle);
     end;
  end;
end;
Ein Aufruf sähe zum Beispiel aus:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Kontrast(Image1.Picture.Bitmap,55);
  Image1.Repaint;
end;
Ist vom Easy Delphi Helper

P@Tti
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
axelf98

Registriert seit: 27. Aug 2003
Ort: Ennepetal
440 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Kontrast von einem Bitmap erhöhen

  Alt 1. Sep 2007, 16:01
Danke schön klappt wunderbar!
  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 08:41 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