Concatenar imagens no Go: um guia abrangente
No Go, manipular imagens é muito fácil graças às suas poderosas bibliotecas de imagens. No entanto, se você quiser mesclar várias imagens em uma tela grande, as coisas podem ficar confusas. Aqui está um guia passo a passo para lidar com essa tarefa como um profissional.
Carregando imagens
Para começar, carregue as imagens que deseja concatenar. Aqui está um trecho de código para fazer isso:
// 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) }
Criando uma nova imagem
Em seguida, vamos criar uma nova imagem espaçosa para acomodar ambas as imagens carregadas. Determine as dimensões desta nova tela adicionando as larguras de ambas as imagens:
r := image.Rectangle{image.Point{0, 0}, img1.Bounds().Dx() img2.Bounds().Dx(), img1.Bounds().Dy()} rgba := image.NewRGBA(r)
Desenhando as Imagens
Agora vem a parte divertida: montar as imagens dentro deste novo canvas. Determine a posição onde deseja colocar a segunda imagem e desenhe ambas as imagens na tela:
// 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)
Salvando o resultado
Finalmente, vamos imortalizar este concatenado obra-prima salvando-a como um novo arquivo de imagem:
out, err := os.Create("./output.jpg") if err != nil { fmt.Println(err) } var opt jpeg.Options opt.Quality = 80 jpeg.Encode(out, rgba, &opt)
É isso aí! Você mesclou com sucesso várias imagens em um todo coeso. Vá em frente e conquiste o mundo da manipulação de imagens.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3