Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Multimedia

k23:k23.4:k23.4.2:k23.4.2.6:start

23.4.2.6 Komponente gb.image.effect

Die Komponente gb.image.effect besitzt zwei Klassen:

  1. Klasse Image: Sie erweitert die ursprüngliche Image-Klasse um Effekt-Methoden.
  2. Klasse ImageHistogram: Sie präsentiert das Bildhistogramm eines ausgewählten Bildes.

Die Beschreibung der Klasse ImageHistogramm finden Sie im folgenden Kapitel 24.4.2.7.

Die Klasse Image (gb.image.effect)

  • reimplementiert die Klasse Image aus gb.image,
  • fügt der Originalklasse Image viele Konstanten und Effektmethoden hinzu und
  • ist erzeugbar.

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.

23.4.2.6.1 Klasse Color (gb.image) – Statische Methode

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:

  • Width ist die Breite und Height ist die Höhe des Ergebnisbildes.
  • SrcColor ist die Startfarbe und DstColor ist die Endfarbe.
  • Orientation ist die Ausrichtung des Farbverlaufs, deren Werte in der u.a. Liste angegeben werden.
  • XDecay ist die x-Abklinglänge mit einem Wert zwischen -1 und 1 (optional).
  • YDecay ist die Länge des y-Abklingens mit einem Wert zwischen -1 und 1 (optional).

Der Parameter Orientation kann einen der folgenden Werte annehmen,:

  • Image.Vertical für einen vertikalen Farbverlauf.
  • Image.Horizontal für einen horizontalen Farbverlauf.
  • Image.Diagonal für einen diagonalen Farbverlauf.
  • Image.Cross für einen diagonalen Farbverlauf.
  • Image.Pyramid für einen pyramidenförmigen Farbverlauf.
  • Image.Rectangle für einen rechteckigen Farbverlauf.
  • Image.PipeCross für einen Rohrkreuzverlauf.
  • Image.Elliptic für einen elliptischen Gradienten.

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:

BILD Gradient

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

23.4.2.6.2 Klasse Color (gb.image.effect) – Methoden

Die Neuimplementierung von Image in gb.image.effect wurde im Vergleich zu Image (gb.image) um diese Filter- und Effekt-Methoden ergänzt:

MethodeRückgabetypBeschreibung
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 ] )ImageZeichnet 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 ] ) ImageErzeugt 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 ( )ImageMinimiert das Speckle-Rauschen im Quellbild mithilfe des 8-Hüllen-Algorithmus.
Edge ( [ Radius As Float ] )ImageErkennt 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 ( ) ImageDas 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 ( )ImageHistogramErzeugt ein Histogramm des Bildes und gibt es zurück.
Implode ( [ Factor As Float, Background As Integer ] ) ImageImplodiert 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 ) ImageEinem 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 ] )ImageErzeugt 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 ] )ImageSchattiert 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 ] ) ImageSchä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 ] )ImageDie 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 ] ) ImageVerwirbelt 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 ] )ImageEs 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)

23.4.2.6.3 Beispiele

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.

BILD Swirl

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:

BILD Ölbild

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:

BILD Emboss

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:

BILD Invert

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

Download

Die Website verwendet zwei temporäre Session-Cookies. Diese technisch notwendigen Cookies werden gelöscht, wenn der Web-Browser geschlossen wird! Informationen zu Cookies erhalten Sie in der Datenschutzerklärung.
k23/k23.4/k23.4.2/k23.4.2.6/start.txt · Zuletzt geändert: 29.11.2023 (Externe Bearbeitung)

Seiten-Werkzeuge