AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Photoshopfilter: Dunkle Bereiche Vergrößern
Thema durchsuchen
Ansicht
Themen-Optionen

Photoshopfilter: Dunkle Bereiche Vergrößern

Ein Thema von Eichhoernchen · begonnen am 25. Jun 2006 · letzter Beitrag vom 25. Jun 2006
Antwort Antwort
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#1

Photoshopfilter: Dunkle Bereiche Vergrößern

  Alt 25. Jun 2006, 13:49
So, da ich diesen Filter brauchte habe ich ihn nachgecodet.

Er benötigt die RGBtoHSV und HSVtoRGB Funktionen aus: http://www.delphipraxis.net/internal...ct.php?t=24154

Beschreibung nach Photoshop:
Zitat:
"Dunkle Bereiche vergrößern" und "Helle Bereiche vergrößern" (Photoshop) Diese beiden Filter sind zum Ändern von Masken sehr nützlich. Der Filter "Dunkle Bereiche vergrößern" entspricht dem Anwenden einer Überfüllung - schwarze Bereiche werden ausgedehnt und weiße Bereiche verkleinert. Der Filter "Helle Bereiche vergrößern" entspricht dem Anwenden einer Unterfüllung - weiße Bereiche werden ausgedehnt und schwarze Bereiche verkleinert. Genau wie der Filter "Helligkeit interpolieren" werden die Filter "Dunkle Bereiche vergrößern" und "Helle Bereiche vergrößern" auf einzelne Pixel in einer Auswahl angewendet. Innerhalb eines angegebenen Radius ersetzen die Filter "Dunkle Bereiche vergrößern" und "Helle Bereiche vergrößern" den Helligkeitswert des aktuellen Pixels durch den höchsten oder niedrigsten Helligkeitswert der umgebenden Pixel.
Delphi-Quellcode:
function ExpandDarkAreas(bmp : TBitmap; const range : byte) : TBitmap;
var i, j, x, a, b, minimum, count : integer;
    angle : array of integer;
    saturation, brightness : array of byte;
    pixcolor : TColor;
Begin
 count := (range+range+1)*(range+range+1); //Anzahl der Pixel die untersucht werden
 //Arrays auf Länge setzen
 setlength(angle, count);
 setlength(saturation, count);
 setlength(brightness, count);
 //Funktionsergebnis vorbereiten
 result := TBitmap.Create;
 result.Width := bmp.Width;
 result.Height := bmp.Height;
 result.PixelFormat := bmp.PixelFormat;
 //Alle Pixel sollen durchlaufen werden
 for i := 0 to bmp.Width-1 do
  for j := 0 to bmp.Height-1 do
    Begin
     x := 0;
     for a := -range to range do
      for b := -range to range do
       Begin
        //HSV Werte in die Arrays speichern
        pixcolor := bmp.Canvas.Pixels[i+a, j+b];
        RGBtoHSV(GetRValue(pixcolor), GetGValue(pixcolor), GetBValue(pixcolor), angle[x], saturation[x], brightness[x]);
        inc(x);
       end;
     //Dunkelsten Wert suchen!
     minimum := brightness[0];
     for x := 1 to count-1 do
      minimum := Min(minimum, brightness[x]); //Für helle Bereiche vergrößern: statt Min=>Max
    //Dunkelsten Wert in neue Bitmap setzen.
     result.Canvas.Pixels[i, j] := HSVtoRGB(angle[(count div 2)+1], saturation[(count div 2)+1], minimum);
    end;
end;

Hmm der Code sollte eigentlich ausreichend Kommentiert sein.


Viel Spaß Eichhoernchen
Jan
  Mit Zitat antworten Zitat
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Photoshopfilter: Dunkle Bereiche Vergrößern

  Alt 25. Jun 2006, 21:12
Muss ich leider zurückzoehen den Eintrag, es ist nicht genau der Photoshopfilter, zwar macht der Filter genau das was in der Beschreibung steht, jedoch scheint Photoshop noch die Farben irgendwie zu mischen!


Sorry ich gucke ob ich es schaffe es richtig zu bekommen!
Jan
  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 04:29 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