Arbeiten mit Bildern in Go: Resize und Crop mit der Imaging-Bibliothek

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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/imaging


Danach 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

Empfehlungen