Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verkette ich Bilder in Go?

Wie verkette ich Bilder in Go?

DDD
DDDOriginal
2024-11-07 01:45:03925Durchsuche

How to Concatenate Images in Go?

Bilder in Go verketten: Eine umfassende Anleitung

In Go ist das Bearbeiten von Bildern dank der leistungsstarken Bildbibliotheken ein Kinderspiel. Wenn Sie jedoch mehrere Bilder auf einer großen Leinwand zusammenführen möchten, kann es unübersichtlich werden. Hier ist eine Schritt-für-Schritt-Anleitung, um diese Aufgabe wie ein Profi zu erledigen.

Bilder laden

Laden Sie zunächst die Bilder, die Sie verketten möchten. Hier ist ein Codeausschnitt, um das zu tun:

// Open the first image
imgFile1, err := os.Open("test1.jpg")
if err != nil {
    fmt.Println(err)
}
// Decode the image
img1, _, err := image.Decode(imgFile1)
if err != nil {
    fmt.Println(err)
}

// Open the second image
imgFile2, err := os.Open("test2.jpg")
if err != nil {
    fmt.Println(err)
}
// Decode the image
img2, _, err := image.Decode(imgFile2)
if err != nil {
    fmt.Println(err)
}

Neues Bild erstellen

Als nächstes erstellen wir ein geräumiges neues Bild, um beide geladenen Bilder aufzunehmen. Bestimmen Sie die Abmessungen dieser neuen Leinwand, indem Sie die Breiten beider Bilder addieren:

r := image.Rectangle{image.Point{0, 0}, img1.Bounds().Dx() + img2.Bounds().Dx(), img1.Bounds().Dy()}
rgba := image.NewRGBA(r)

Bilder zeichnen

Jetzt kommt der spaßige Teil: das Zusammensetzen der Bilder darin neue Leinwand. Bestimmen Sie die Position, an der Sie das zweite Bild platzieren möchten, und zeichnen Sie dann beide Bilder auf die Leinwand:

// Starting point of the second image (bottom left)
sp2 := image.Point{img1.Bounds().Dx(), 0}
// Rectangle for the second image
r2 := image.Rectangle{sp2, sp2.Add(img2.Bounds().Size())}

// Draw the first image
draw.Draw(rgba, img1.Bounds(), img1, image.Point{0, 0}, draw.Src)
// Draw the second image
draw.Draw(rgba, r2, img2, image.Point{0, 0}, draw.Src)

Ergebnis speichern

Lassen Sie uns dies abschließend verewigen verkettetes Meisterwerk, indem Sie es als neue Bilddatei speichern:

out, err := os.Create("./output.jpg")
if err != nil {
    fmt.Println(err)
}

var opt jpeg.Options
opt.Quality = 80

jpeg.Encode(out, rgba, &opt)

Das ist es! Sie haben mehrere Bilder erfolgreich zu einem zusammenhängenden Ganzen zusammengeführt. Machen Sie sich auf den Weg und erobern Sie die Welt der Bildmanipulation.

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

Stellungnahme:
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