Heim > Artikel > Backend-Entwicklung > So verwenden Sie Golang zum schrittweisen Laden und Komprimieren von Bildern
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!") }Der obige Code öffnet zunächst ein Bild. Tritt beim Ladevorgang ein Fehler auf, wird eine Fehlermeldung ausgegeben. Verwenden Sie dann die Funktion jpeg.Decode, um das Bild in eine speicherinterne Bildstruktur zu dekodieren. Als nächstes wird eine Zieldatei erstellt und die Struktur webp.Options wird verwendet, um die Parameter des progressiven Ladens festzulegen, z. B. ob Komprimierung, Qualität, Methode, SNS-Stärke usw. verloren gehen sollen. Abschließend wird die Funktion webp.Encode aufgerufen, um das Bild in das fortlaufend geladene Webp-Format zu kodieren und in die Zieldatei auszugeben. 5. Komprimierungsverarbeitung
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!") }Der obige Code ist im Grunde derselbe wie der progressive Ladecode. Der einzige Unterschied besteht darin, dass die komprimierten Bilddaten schließlich über das WebP in die Zieldatei geschrieben werden .Schreibfunktion. Durch die obigen Codebeispiele haben wir gelernt, wie man mit Golang Bilder schrittweise lädt und komprimiert, um die Ladegeschwindigkeit und das Benutzererlebnis zu verbessern. Ich hoffe, dieser Artikel wird Ihnen hilfreich sein. Das Erlernen von Golang bringt viele Herausforderungen mit sich, bietet uns aber auch mehr Tools und Bibliotheken zur Lösung praktischer Probleme. Ob es um die Verarbeitung von Bildern, die Netzwerkkommunikation oder andere Bereiche geht, Golang ist eine leistungsstarke und beliebte Wahl.
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!