"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo concatenar imágenes en Go?

¿Cómo concatenar imágenes en Go?

Publicado el 2024-11-09
Navegar:955

How to Concatenate Images in Go?

Concatenar imágenes en Go: una guía completa

En Go, manipular imágenes es muy sencillo gracias a sus poderosas bibliotecas de imágenes. Sin embargo, si desea fusionar varias imágenes en un lienzo grande, las cosas pueden resultar confusas. Aquí tienes una guía paso a paso para realizar esta tarea como un profesional.

Cargar imágenes

Para comenzar, carga las imágenes que deseas concatenar. Aquí hay un fragmento de código para hacer eso:

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

Creación de una nueva imagen

A continuación, creemos una nueva imagen espaciosa para acomodar ambas imágenes cargadas. Determine las dimensiones de este nuevo lienzo sumando los anchos de ambas imágenes:

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

Dibujar las imágenes

Ahora viene la parte divertida: ensamblar las imágenes dentro de este nuevo lienzo. Determine la posición donde desea colocar la segunda imagen y luego dibuje ambas imágenes en el lienzo:

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

Guardando el resultado

Finalmente, inmortalicemos esta concatenación obra maestra guardándola como un nuevo archivo de imagen:

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

var opt jpeg.Options
opt.Quality = 80

jpeg.Encode(out, rgba, &opt)

¡Eso es todo! Has fusionado con éxito varias imágenes en un todo cohesivo. Avanza y conquista el mundo de la manipulación de imágenes.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3