Die Bibliothek imaging für Go: Resize und Crop von Bildern
In der modernen Webentwicklung ist die Bildverarbeitung eine der Kernaufgaben: von der Erstellung von Vorschaubildern bis zur Anpassung von Bildern an verschiedene Bildschirmauflösungen. Wenn Sie in Go (Golang) programmieren und ein einfaches, aber leistungsstarkes Werkzeug für die Bildverarbeitung suchen, werfen Sie einen Blick auf die Bibliothek imaging. Sie bietet eine praktische API zum Ändern der Größe (Resize), Zuschneiden (Crop), Drehen, Filtern und für viele weitere Operationen.
Was ist imaging?
imaging ist eine beliebte Bibliothek für Go, die auf dem Paket image aus der Standardbibliothek aufbaut, aber mit einer viel benutzerfreundlicheren Oberfläche. Sie unterstützt die Formate JPEG, PNG, GIF und BMP und ermöglicht Operationen mit minimalem Codeaufwand. Der Hauptvorteil liegt in der Geschwindigkeit und der einfachen Integration.
Installation
Führen Sie zur Installation der Bibliothek im Terminal aus:
go get -u github.com/disintegration/imagingDanach können Sie sie in Ihr Projekt importieren:
import "github.com/disintegration/imaging"Grundlegende Operationen: Resize und Crop
1. Größenänderung (Resize)
Die Funktion imaging.Resize ermöglicht es, die Größe eines Bildes auf die angegebene Breite und Höhe zu ändern. Wenn die Proportionen beibehalten werden sollen, übergeben Sie 0 für eine der Seiten – die Bibliothek berechnet die andere automatisch.
Beispiel: Resize auf 300 Pixel Breite
package main
import ( "github.com/disintegration/imaging")
func main() { // Bild öffnen img, err := imaging.Open("input.jpg") if err != nil { panic(err) }
// Breite auf 300px ändern, Höhe wird automatisch angepasst resized := imaging.Resize(img, 300, 0, imaging.Lanczos)
// Ergebnis speichern err = imaging.Save(resized, "output_resized.jpg") if err != nil { panic(err) }}Im Beispiel wird der Filter imaging.Lanczos verwendet – einer der qualitativ hochwertigsten für Resize. Sie können auch andere auswählen: NearestNeighbor, Box, Linear, Gaussian usw.
2. Zuschneiden (Crop)
Die Funktion imaging.Crop schneidet einen rechteckigen Bereich aus dem Bild aus. Ihr müssen die Koordinaten der oberen linken Ecke sowie die Breite und Höhe des Bereichs übergeben werden.
Beispiel: Zuschneiden des mittleren Bereichs 200x200 Pixel
package main
import ( "github.com/disintegration/imaging")
func main() { img, err := imaging.Open("input.jpg") if err != nil { panic(err) }
// Koordinaten für den mittleren Zuschnitt berechnen width := img.Bounds().Dx() height := img.Bounds().Dy() x := (width - 200) / 2 y := (height - 200) / 2
// Zuschneiden cropped := imaging.Crop(img, imaging.Rect(x, y, x+200, y+200))
err = imaging.Save(cropped, "output_cropped.jpg") if err != nil { panic(err) }}Wenn Sie einfach auf ein Quadrat in der Mitte zuschneiden möchten, verwenden Sie imaging.CropCenter:
croppedCenter := imaging.CropCenter(img, 200, 200)Erweiterte Funktionen
Neben den grundlegenden Operationen bietet imaging:
- Thumbnail – Erstellung einer Miniaturansicht unter Beibehaltung der Proportionen und Auffüllen des Hintergrunds.
- Rotate – Drehung um einen beliebigen Winkel.
- Flip – Spiegelung horizontal oder vertikal.
- Blur – Weichzeichnen des Bildes.
- Sharpen – Schärfung des Bildes.
- Grayscale – Umwandlung in ein Schwarz-Weiß-Format.
Beispiel: Erstellung einer Miniaturansicht 150x150
Auch in der Bibliothek
Internationalisierung (i18n) in C# (.NET): Vollständige Anleitung
lo für Go: Vollständige Anleitung mit Beispielen
Testen in Rust: Frameworks und Werkzeuge
Testen in C# (.NET): vollständiger Überblick über Frameworks und Tools
Caching in Node.js: Redis und Alternativen zur Beschleunigung von Anwendungen
Empfehlungen