Portrait-Effekt

Übersicht Ressourcen Grafik & Design

Neue Antwort erstellen

 

Sterbendes Lüftlein

Betreff: Portrait-Effekt

BeitragSa, Jun 04, 2011 11:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt

BlitzMoritz

BeitragSa, Jun 04, 2011 11:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie wär's mit Selbst-Programmieren? Very Happy Sollte nicht schwer sein.
Ansonsten:
Wähle dir deinen Bereich aus, der scharf sein soll, invertiere die Auswahl. Falls der Übergang weich sein soll, stelle dir unter Auswahl-Ausblenden die gewünschte Übergangsbreite ein und wende auf die Auswahl (evtl. als neue Ebene) irgendeinen Weichzeichner-Filter an. Eigentlich war's das schon, oder?
  • Zuletzt bearbeitet von BlitzMoritz am Sa, Jun 04, 2011 11:42, insgesamt einmal bearbeitet
 

Sterbendes Lüftlein

BeitragSa, Jun 04, 2011 11:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt

BlitzMoritz

BeitragSa, Jun 04, 2011 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Gucksdu => Filter => Weichzeichnen => ...
 

Sterbendes Lüftlein

BeitragSa, Jun 04, 2011 12:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt
  • Zuletzt bearbeitet von Sterbendes Lüftlein am Sa, Jun 04, 2011 12:07, insgesamt einmal bearbeitet
 

Sterbendes Lüftlein

BeitragSa, Jun 04, 2011 12:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt

BlitzMoritz

BeitragSo, Jun 05, 2011 9:02
Antworten mit Zitat
Benutzer-Profile anzeigen
... 'hab 'mal 'ne kleine Funktion hingerotzt, funktioniert aber wie gewünscht, probier's 'mal aus: Razz
BlitzMax: [AUSKLAPPEN]
SuperStrict
Local PM:TPixmap = LoadPixmap("Ein (kleines) Bild deiner Wahl.png")
Graphics PixmapWidth(PM), PixmapHeight(PM)
DrawPixmap PM, 0, 0
Flip
WaitKey()
PM = UnSharpen(PM, 6) 'das zweite Argument ist die Stärke des Weichzeichnens ...
DrawPixmap PM, 0, 0
Flip
WaitKey()
End

Function UnSharpen:TPixmap(PM:TPixmap, Intensity%)
Local Count% = (2*Intensity+1)
Count = Count*Count
Local RGB%[ 3, PixmapWidth(PM), PixmapHeight(PM)]
For Local x% = 0 Until PixmapWidth(PM)
For Local y% = 0 Until PixmapHeight(PM)
Local ARGB% = ReadPixel(PM, x, y)
RGB[0,x,y] = Byte((ARGB & $00FF0000:Int) / $10000:Int)
RGB[1,x,y] = Byte((ARGB & $0000FF00:Int) / $100:Int)
RGB[2,x,y] = Byte(ARGB & $000000FF:Int)
Next
Next
For Local x% = 0 Until PixmapWidth(PM)
For Local y% = 0 Until PixmapHeight(PM)
Local NewRGB%[3]
For Local i% = -Intensity To Intensity
For Local j% = -Intensity To Intensity
Local correct_x% = Max(0, Min(PixmapWidth(PM)-1, x + i))
Local correct_y% = Max(0, Min(PixmapHeight(PM)-1, y + j))
NewRGB[0] = NewRGB[0] + RGB[0,correct_x,correct_y]
NewRGB[1] = NewRGB[1] + RGB[1,correct_x,correct_y]
NewRGB[2] = NewRGB[2] + RGB[2,correct_x,correct_y]
Next
Next
NewRGB[0] = NewRGB[0] / Count
NewRGB[1] = NewRGB[1] / Count
NewRGB[2] = NewRGB[2] / Count
WritePixel(PM, x, y, -16777216+NewRGB[0]*$10000:Int+NewRGB[1]*$100:Int+NewRGB[2])
Next
Next
Return PM
End Function

Übrigens herrliches Thema: Pixelmanipulation - hatte hier selbst sehr viel Freude mit dem Experimentieren.

Neue Antwort erstellen


Übersicht Ressourcen Grafik & Design

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group