Die Komponente gb.image.effect besitzt zwei Klassen:
Die Beschreibung der Klasse ImageHistogramm finden Sie im folgenden Kapitel 24.4.2.7.
Die Klasse Image (gb.image.effect)
So erzeugen Sie ein neues Image-Objekt:
Dim hImage As Image hImage = New Image ( [ Width As Integer, Height As Integer, Color As Integer, Format As Integer ] )
Alle Parameter sind optional. Wenn Color angegeben ist, wird das Bild zunächst mit dieser Farbe gefüllt. Andernfalls ist der Bildinhalt undefiniert. Format kann einer der folgenden Werte sein: Standard (0) oder Premultiplied (1).
Über die aktuell 21 Konstanten der Klasse können Sie sich auf https://gambaswiki.org/wiki/comp/gb.image.effect/image informieren. Stand: November 2023.
Die Klasse verfügt über die folgende statische Methode Gradient(…):
Static Function Gradient (Width As Integer,Height As Integer,SrcColor As Integer,DstColor As Integer,Orientation As Integer [,XDecay As Float,YDecay As Float]) As Image
Die Funktion erzeugt ein Farbverlaufsbild:
Der Parameter Orientation kann einen der folgenden Werte annehmen,:
Der erzeugte Gradient ist standardmäßig linear – mit XDecay und/oder YDecay exponentiell.
Beispiel für einen diagonalen Gradienten (rot → gelb) mit zusätzlich eingefügtem Bild:
Abbildung 23.4.2.6.1: Methode Gradient(…)
Quelltext-Ausschnitt
Public imgCurrent As Image Public imgExtern As Image lblChanged.Text = "G R A D I E N T >> L I N E A R" imgCurrent = Image.Gradient(355, 242, Color.Red, Color.Yellow, Image.Diagonal) imgExtern = Image.Load("images/hl.png") imgCurrent.PaintImage(imgExtern, 60, 50, imgExtern.W * 2, imgExtern.H * 2) pboxChanged.Picture = imgCurrent.Picture
Die Neuimplementierung von Image in gb.image.effect wurde im Vergleich zu Image (gb.image) um diese Filter- und Effekt-Methoden ergänzt:
Methode | Rückgabetyp | Beschreibung |
---|---|---|
Balance ( Brightness As Float, Contrast As Float, Gamma As Float [ , Channel As Integer ] ) | - | Ändert die Balance von Bildhelligkeit, Kontrast und Gamma. Brightness ist die Helligkeit, die zwischen -1 und 1 liegt. Contrast ist der Kontrast, der zwischen -1 und 1 liegt. Gamma ist die Gammawert, der zwischen -1 und 1 liegt. Channel ist eine Kombination von Channel-Flags, die angeben, welche Farbkanäle geändert werden sollen. Standardmäßig werden alle Farbkanäle geändert. Channel kann eine beliebige Kombination aus Image.Red (1), Image.Green (2) und Image.Blue (4) oder Image.All (7) für alle Kanäle sein. Beispiel: Image.Balance(0.5, 0.3, 0.42, Image.Red or Image.Green) |
Blur ( [ Value As Float ] ) | Image | Zeichnet ein Bild durch Faltung von Pixel-Nachbarschaften unscharf. Value beschreibt die Intensität der Unschärfe. Der Wert liegt zwischen 0 und 1. |
Charcoal ( [ Radius As Float ] ) | Image | Erzeugt einen hübschen „Holzkohle“-Effekt. Radius ist der Radius des Gauß-Effektes, wobei das mittlere Pixel nicht mitgezählt wird. Ist der Radius gleich Null, so wird eine unveränderte Kopie des Bildes zurückgegeben. |
Despeckle ( ) | Image | Minimiert das Speckle-Rauschen im Quellbild mithilfe des 8-Hüllen-Algorithmus. |
Edge ( [ Radius As Float ] ) | Image | Erkennt Kanten in einem Bild mithilfe von Pixel-Nachbarschaften und einer Kantenerkennungsmaske. Radius ist der Radius des Gauß-Effektes ohne Berücksichtigung des mittleren Pixels. Ist er gleich Null, wird eine unveränderte Kopie des Bildes zurückgegeben. |
Emboss ( ) | Image | Das manipulierte Ausgangsbild wirkt wie geprägt. Dabei werden die Kanten hervorgehoben und verschiedene andere Verbesserungen vorgenommen. |
Equalize ( ) | - | Führt eine Histogramm-Entzerrung für das Referenzbild durch, wobei der Dynamikbereich jeder Grand-Farbe maximiert wird. |
Fade ( Color As Integer, Value As Float ) | - | Blendet ein Bild auf eine bestimmte Hintergrundfarbe aus. Color ist die Hintergrundfarbe. Value ist die Stärke des Effekts mit einem Wert zwischen 0 und 1. |
Flatten ( DarkColor As Integer, BrightColor As Integer ) | - | Färbt ein Bild um. Die dunkelste Farbe wird zu DarkColor, die hellste Farbe zu BrightColor und dazwischen. |
Histogram ( ) | ImageHistogram | Erzeugt ein Histogramm des Bildes und gibt es zurück. |
Implode ( [ Factor As Float, Background As Integer ] ) | Image | Implodiert ein Bild um einen bestimmten Prozentsatz. Factor ist das Ausmaß der Implosion - ein Wert zwischen 0 und 1. Background ist die Hintergrundfarbe, die zum Füllen leerer Pixel verwendet wird. |
Intensity ( Value As Float [ , Channel As Integer ] ) | - | Ändert die Farbintensität. Beispiel: 0,5 reduziert die Farbintensität auf 50%. Value ist der Prozentsatz der Intensitätsänderung. Channel gibt an, welcher Kanal geändert werden soll. Standardmäßig werden alle Kanäle geändert. |
Invert ( [ Channel As Integer ] ) | - | Invertiert ein Bild oder nur einige seiner Kanäle. (Image.All, Image.Red, Image.Green, Image.Blue). Channel gibt an, welche Kanäle invertiert werden sollen. Standardmäßig werden alle Kanäle invertiert. |
Noise ( Noise As Integer ) | Image | Einem Bild etwas Rauschen hinzufügen. Noise ist die Art des Rauschens, das hinzugefügt werden soll. Es kann einer der Werte sein: Image.Uniform, Image.Gaussian, Image.Multiplicative, Image.Impulse, Image.Laplacian, Image.Poisson. |
Normalize ( ) | - | Normalisiert die Pixelwerte so, dass sie den gesamten Bereich der Farbwerte abdecken. Dies ist eine Technik zur Kontrastverbesserung. |
OilPaint ( [ Radius As Float ] ) | Image | Erzeugt einen Ölgemälde-Effekt. Radius ist der Radius des Effekts, wobei das mittlere Pixel nicht mitgezählt wird. Ist der Radius gleich Null, wird eine unveränderte Kopie des Bildes zurückgegeben. |
Shade ( [ Azimuth As Float, Elevation As Float ] ) | Image | Schattiert das Bild mit einer entfernten Lichtquelle. Der Azimuth (0 < azimuth < 2*pi) bestimmt den Seitenwinkel (im Bogenmaß) der fiktiven Lichtquelle. Elevation (-pi/2 < elevation < pi/2) bestimmt die Höhe (im Bogenmaß) der fiktiven Lichtquelle. |
Sharpen ( [ Value As Float ] ) | Image | Schärft die Pixel des Bildes mit Hilfe von Pixel-Nachbarschaften. Value ist die Intensität des Effekts. Der Wert liegt zwischen 0 und 1. |
Solarize ( Value As Float ) | - | Erzeugt einen Solarisationseffekt, der auftritt, wenn ein fotografischer Film während des Entwicklungsprozesses belichtet wird. Value ist das Maß der Solarisation. Der Wert liegt zwischen 0 und 1. |
Spread ( [ Amount As Integer ] ) | Image | Die Pixel werden zufällig ausgetauscht. Amount legt die Umgebung für die Auswahl eines zufälligen Pixels zum Austauschen fest. |
Swirl ( [ Angle As Float, Background As Integer ] ) | Image | Verwirbelt das Bild um einen bestimmten Winkel. Angle ist die Stärke der Verwirbelung im Bogenmaß. Background ist die Hintergrundfarbe, die zum Füllen leerer Pixel verwendet wird. |
Threshold ( Value As Float ) | - | Setzt den Schwellenwert für das Referenzbild. Value ist der Schwellenwert für den Threshold-Filter, mit dem ein Bild stufenlos von maximal hell nach maximal dunkel aufgeteilt werden kann. |
Wave ( [ Amplitude As Float, WaveLength As Float, Background As Integer ] ) | Image | Es werden die Bild-Pixel entlang einer Sinuswelle geändert. Amplitude setzt die Amplitude (in Pixel) der Sinuswelle und WaveLength (in Pixel) die Wellenlänge der Sinuswelle. Background ist die Hintergrundfarbe, die zum Füllen leerer Pixel verwendet wird. |
Tabelle 23.4.2.6.1 : Methoden der Klasse Image (gb.image.effect)
Für einige der Methoden der Klasse Image (gb.image.effect) wird Ihnen je ein Beispiel präsentiert. Wenn die Methoden Parameter verwenden, dann werden diese und die Bilder – das originale und das geänderte – angezeigt. Ergänzend wird der jeweils verwendete Quelltext in Auszügen angegeben.
Beispiel 1 – Methode Image.Swirl(φ)
Die Methode verwirbelt ein Bild mittig um einen bestimmten Winkel φ. Bei negativen Werten wird das Bild im Uhrzeigersinn gedreht – sonst gegen den Uhrzeigersinn.
Abbildung 23.4.2.6.2: Methode Swirl(-163°)
Quelltext-Ausschnitt
lblChanged.Text = "C H A N G E D >> " & "S W I R L (…)" lblValue.Text = hSliderV.Value & "°" '-- Drehwinkel im Bogenmaß pboxChanged.Picture = imgOriginal.Swirl(Rad(hSliderV.Value), Color.Red).Picture
Beispiel 2 – Methode Image.OilPaint(…)
Die Methode erzeugt einen Ölgemälde-Effekt, der nur bei kleinen Werten des Parameters den Effekt gut präsentiert:
Abbildung 23.4.2.6.3: Methode OilPaint(2)
Quelltext-Ausschnitt
lblChanged.Text = "C H A N G E D >> " & "O I L P A I N T (…)" lblValue.Text = hSliderV.Value pboxChanged.Picture = imgCurrent.OilPaint(hSliderV.Value).Picture
Beispiel 3 – Methode Image.Emboss( )
Die Methode erzeugt einen Präge-Effekt:
Abbildung 23.4.2.6.4: Methode Emboss()
Quelltext-Ausschnitt
Public Sub btnDoEmboss_Click() lblValue.Visible = False hSliderV.Visible = False lblChanged.Text = "C H A N G E D >> " & "E M B O S S ( )" imgChanged = imgOriginal.Emboss() pboxChanged.Picture = imgChanged.Picture End
Beispiel 4 – Methode Image.Invert(…)
Die Methode invertiert ein komplettes Bild oder nur einige seiner Farb-Kanäle. Im Beispiel erfolgt das Invertieren in zwei Stufen:
Abbildung 23.4.2.6.5: Methode Invert(…)
Quelltext-Ausschnitt
Public Sub btnDoInvertAll_Click() lblChanged.Text = "C H A N G E D —> " & "I N V E R T A L L(...)" imgCurrent = imgOriginal imgCurrent.Invert(Image.Red Or Image.Green) imgCurrent.Invert(Image.All) pboxChanged.Picture = imgCurrent.Picture End