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.
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