So verwenden Sie Golang zum schrittweisen Laden und Komprimieren von Bildern
1 Einführung
Heutzutage ist die Verwendung von Bildern im Internet weit verbreitet. Allerdings treten häufig auch Probleme wie das langsame Laden großer Bilder und die fehlende progressive Anzeige auf, die das Benutzererlebnis beeinträchtigen. In diesem Artikel erfahren Sie, wie Sie mit Golang Bilder schrittweise laden und komprimieren, um die Ladegeschwindigkeit und das Benutzererlebnis zu verbessern.
2. Progressives Laden
Das sogenannte progressive Laden bedeutet, dass vor dem vollständigen Laden des Bildes nach und nach ein kleiner Teil seiner Qualität angezeigt werden kann.
In Golang habe ich die Drittanbieter-Bibliothek „github.com/chai2010/webp“ verwendet, um eine progressive Lade- und Komprimierungsverarbeitung durchzuführen. Als Nächstes werde ich Sie Schritt für Schritt durch den gesamten Prozess führen.
3. Abhängige Bibliotheken installieren
Öffnen Sie zunächst das Terminal und führen Sie den folgenden Befehl aus, um die „webp“-Bibliothek zu installieren:
go get -u github.com/chai2010/webp
4. Beispielcode für progressives Laden: Bilder komprimieren. Verarbeitung:
package main import ( "fmt" "github.com/chai2010/webp" "image/jpeg" "log" "os" ) func main() { file, err := os.Open("path/to/image.jpg") if err != nil { log.Fatal(err) } defer file.Close() img, err := jpeg.Decode(file) if err != nil { log.Fatal(err) } dest, err := os.Create("path/to/progressive_image.webp") if err != nil { log.Fatal(err) } defer dest.Close() options := webp.Options{ Lossless: false, Quality: 80, Method: 6, SnsStrength: 50, FilterSharpness: 0, } err = webp.Encode(dest, img, &options) if err != nil { log.Fatal(err) } fmt.Println("Progressive image generated successfully!") }
Auf der Grundlage des progressiven Ladens müssen wir auch Bilder komprimieren, um ihre Dateigröße zu reduzieren und die Ladegeschwindigkeit und das Benutzererlebnis zu verbessern.
package main import ( "bytes" "fmt" "github.com/chai2010/webp" "image" "image/jpeg" "log" "os" ) func main() { file, err := os.Open("path/to/image.jpg") if err != nil { log.Fatal(err) } defer file.Close() img, err := jpeg.Decode(file) if err != nil { log.Fatal(err) } dest, err := os.Create("path/to/compressed_image.webp") if err != nil { log.Fatal(err) } defer dest.Close() options := webp.Options{ Lossless: false, Quality: 80, Method: 6, SnsStrength: 50, FilterSharpness: 0, } buff := new(bytes.Buffer) err = webp.Encode(buff, img, &options) if err != nil { log.Fatal(err) } err = webp.Write(dest, buff.Bytes()) if err != nil { log.Fatal(err) } fmt.Println("Compressed image generated successfully!") }
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Golang zum schrittweisen Laden und Komprimieren von Bildern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!