Heim > Backend-Entwicklung > Golang > Wie kombiniere ich in Go mehrere Bilder zu einem?

Wie kombiniere ich in Go mehrere Bilder zu einem?

Susan Sarandon
Freigeben: 2024-11-07 06:07:03
Original
305 Leute haben es durchsucht

How to Combine Multiple Images into One in Go?

So kombinieren Sie Bilder in Go

In Go können Sie Bilder bearbeiten, um aus mehreren kleineren ein einzelnes größeres Bild zu erstellen. Befolgen Sie dazu die folgenden Schritte:

  1. Laden Sie die Bilder: Verwenden Sie os.Open, um die Bilddateien zu öffnen, und image.Decode, um die Bilder in image.Image-Objekte zu dekodieren .
  2. Erstellen Sie das große Bild:Bestimmen Sie die Abmessungen des endgültigen Bildes und verwenden Sie image.NewRGBA, um ein leeres Bild mit diesen Abmessungen zu erstellen.
  3. Zeichnen Sie das Erstes Bild: Verwenden Sie draw.Draw, um das erste Bild auf das große Bild zu zeichnen. Geben Sie den Startpunkt und das Quellbild an.
  4. Berechnen Sie den Startpunkt des zweiten Bildes:Bestimmen Sie den Versatz des zweiten Bildes im endgültigen Bild. Dies ist normalerweise die Breite des ersten Bildes.
  5. Zeichnen Sie das zweite Bild: Verwenden Sie draw.Draw, um das zweite Bild auf das große Bild zu zeichnen. Geben Sie den Startpunkt und das Quellbild an.
  6. Endgültiges Bild exportieren: Verwenden Sie image.Encode, um das kombinierte Bild in eine Datei im gewünschten Format zu exportieren.

Um beispielsweise eine horizontale Verkettung zweier Bilder zu erstellen, können Sie den folgenden Code verwenden:

import (
    "fmt"
    "image"
    "image/draw"
    "image/jpeg"
    "os"
)

func main() {
    // Load the images
    img1, err := os.Open("test1.jpg")
    if err != nil {
        fmt.Println(err)
    }
    img2, err := os.Open("test2.jpg")
    if err != nil {
        fmt.Println(err)
    }
    img1, _, err = image.Decode(img1)
    if err != nil {
        fmt.Println(err)
    }
    img2, _, err = image.Decode(img2)
    if err != nil {
        fmt.Println(err)
    }

    // Create the large image
    r1 := img1.Bounds()
    r2 := img2.Bounds()
    r := image.Rectangle{image.Point{0, 0}, r2.Max}
    rgba := image.NewRGBA(r)

    // Draw the images
    draw.Draw(rgba, r1, img1, image.Point{0, 0}, draw.Src)
    draw.Draw(rgba, r2, img2, image.Point{r1.Dx(), 0}, draw.Src)

    // Export the final image
    out, err := os.Create("output.jpg")
    if err != nil {
        fmt.Println(err)
    }
    
    var opt jpeg.Options
    opt.Quality = 80
    
    jpeg.Encode(out, rgba, &opt)
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kombiniere ich in Go mehrere Bilder zu einem?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage