Wie kann ich mit dem Go-Image-Paket mehrere Bilder zu einem einzigen Bild verketten?

DDD
Freigeben: 2024-11-06 16:02:03
Original
817 Leute haben es durchsucht

How can I concatenate multiple images into a single image using the Go image package?

Bilder in Go verketten

Das Verketten mehrerer Bilder zu einem einzigen, größeren Bild ist ein häufiges Szenario in der Bildverarbeitung. In Go ist dies mithilfe des Bildpakets ganz einfach.

Erstellen eines leeren Bildes

Erstellen Sie zunächst ein neues Bild mit Abmessungen, die groß genug sind, um alle kleineren Bilder aufzunehmen.

newImage := image.NewRGBA(image.Rect(0, 0, totalWidth, maxHeight))
Nach dem Login kopieren

Hier ist totalWidth die kombinierte Breite der kleineren Bilder und maxHeight die maximale Höhe unter ihnen.

Zeichnen der kleineren Bilder

Zeichnen Sie als Nächstes jedes kleinere Bild auf das neue Bild. Bestimmen Sie den geeigneten Startpunkt und das Rechteck für jedes Bild.

for _, img := range smallerImages {
    offset := point{dx, 0}  // offset of the current image
    
    r := img.Bounds() // rectangle of the smaller image

    newImage.Draw(image.Rect(offset.X, offset.Y, offset.X+r.Dx(), offset.Y+r.Dy()), img, r.Min, draw.Src)
    
    dx += r.Dx() // update the x coordinate for the next image
}
Nach dem Login kopieren

Exportieren des verketteten Bildes

Abschließend exportieren Sie das verkettete Bild in eine Datei oder einen Stream.

out, err := os.Create("output.png")
if err != nil {
    return err
}

if err := png.Encode(out, newImage); err != nil {
    return err
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich mit dem Go-Image-Paket mehrere Bilder zu einem einzigen Bild verketten?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!