Die Gambas-GUI-Toolkits QT und GTK implementieren gb.image.io, so dass es nicht erforderlich ist, diese Komponente in den Projekt-Eigenschaften zu aktivieren, wenn Sie eine GUI-Applikation erstellen wollen. Sie müssen gb.image.io nur dann hinzufügen, wenn die Anwendung kein GUI-Toolkit verwendet, so das Ihnen dann alle Eigenschaften und Methoden aus gb.image.io-Methoden zur Verfügung stehen.
Diese Klasse ist eine Neuimplementierung von Image in gb.image. Unterstützt werden alle Bild-Formate, die von der gdk-pixbuf-Bibliothek bereitgestellt werden (mindestens JPEG, PNG, BMP, GIF und XPM). Die Klasse ist erzeugbar und funktioniert wie ein Lese- und Schreiben-Array. Die Neuimplementierung von Image in gb.image.io wurde im Vergleich zu Image (gb.image) um 4 Methoden ergänzt.
Die Klasse Image (gb.image.io) verfügt über diese neu implementierten Methoden:
Methode | Rückgabetyp | Beschreibung |
---|---|---|
Static Function FromString ( Data As String ) | Image | Lädt ein Bild aus dem Inhalt eines Strings. |
Static Function Load ( Path As String ) | Image | Lädt ein Bild aus einer Datei. Der Parameter Path ist der Dateipfad. |
Sub Save ( Path As String [ , Quality As Integer ] ) | - | Speichert das Bild in einer Datei. Die Dateierweiterung von Path gibt das Format des gespeicherten Bildes an. Das Argument Quality wird nur dann verwendet, wenn ein Bild im jpeg- oder png-Format gespeichert wird. |
Function Stretch ( Width As Integer, Height As Integer ) | Image | Die Funktion ändert die Größe eines Bildes auf die angegebenen Werte für Width und Height, was für Vektor-Grafiken nicht gilt. Wenn Width oder Height negativ ist, dann wird die Bild-Proportion beibehalten. |
Tabelle 23.4.2.8.1 : Methoden der Klasse Image
Hinweise:
Der Bezeichner für die Funktion 'Stretch(…) ist irreführend. Die Funktion gibt per se keine 'gestreckte Version' eines Bildes als Funktionswert zurück. Nur wenn ein Parameter – entweder Width oder Height – negativ ist, dann wird die Bild-Proportion bei der Größenänderung beibehalten.
Im vorliegenden Projekt werden die beiden Funktionen Function Load (Path As String) und Stretch (Width As Integer, Height As Integer) sowie die Prozedur Save (Path As String [ , Quality As Integer ]) eingesetzt.
Sie können
Das ist der Quelltext:
' Gambas class file Public hImage As New Image Public hImageMod As New Image Public sPath As String Public Sub Form_Open() FMain.Caption = "Image.Stretch" End Public Sub btnLoad_Click() '-- Show the original image in PictureBox1 hImage = Image.Load(Application.Path &/ "images/fractal.png") '-- Show the original image in PictureBox1 PictureBox1.Picture = hImage.Picture '-- Stretch ( Width As Integer, Height As Integer ) hImageMod = hImage.Stretch(spboxW.Value, spboxH.Value) '-- Display the modified image in the PictureBox2 PictureBox2.Picture = hImageMod.Picture End Public Sub spboxW_Change() PictureBox2.Picture = hImageMod.Stretch(spboxW.Value, spboxH.Value).Picture End Public Sub spboxH_Change() PictureBox2.Picture = hImageMod.Stretch(spboxW.Value, spboxH.Value).Picture End Public Sub btnSave_Click() If Not IsNull(hImageMod) Then hImageMod.Save(Application.Path &/ "images/fractal.stretch.png") End
Wenn das Programm gestartet wird, dann werden die Start-Parameter für die Stretch(…)-Funktion auf W = 150 und H = 200 gesetzt:
Abbildung 23.4.2.8.1: Anzeige nach dem Programmstart
Anschließend wurden die Parameter auf W = 120 und H = 370 gesetzt. Die Bild-Proportion wird nicht beibehalten:
Abbildung 23.4.2.8.2: Anzeige mit geänderten Parametern
Wenn Sie jedoch einen der beiden Parameter – hier die Bildweite W – auf einen (beliebigen) negativen Wert setzen und anschließend die Bildhöhe H ändern, dann wird das Bild auf die ausgewählte Bildhöhe gesetzt und die Bildweite (automatisch) so geändert, dass die Bildproportion beibehalten wird:
Abbildung 23.4.2.8.3: Anzeige mit einem negativen Parameter
Das Projekt wird Ihnen im Download-Bereich als Projekt-Archiv zur Verfügung gestellt.