„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie verkette ich Bilder in Go?

Wie verkette ich Bilder in Go?

Veröffentlicht am 09.11.2024
Durchsuche:277

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)
}

Ein 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 in dieser neuen 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)

Speichern des Ergebnisses

Lassen Sie uns dies abschließend verewigen 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.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3