"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment concaténer des images dans Go ?

Comment concaténer des images dans Go ?

Publié le 2024-11-09
Parcourir:664

How to Concatenate Images in Go?

Concaténer des images dans Go : un guide complet

Dans Go, manipuler des images est un jeu d'enfant grâce à ses puissantes bibliothèques d'images. Cependant, si vous souhaitez fusionner plusieurs images dans un seul grand canevas, les choses peuvent devenir confuses. Voici un guide étape par étape pour gérer cette tâche comme un pro.

Chargement des images

Pour démarrer, chargez les images que vous souhaitez concaténer. Voici un extrait de code pour ce faire :

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

Création d'une nouvelle image

Ensuite, créons une nouvelle image spacieuse pour accueillir les deux images chargées. Déterminez les dimensions de ce nouveau canevas en ajoutant les largeurs des deux images :

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

Dessiner les images

Vient maintenant la partie amusante : assembler les images dans ce nouveau canevas. Déterminez la position où vous souhaitez placer la deuxième image, puis dessinez les deux images sur le canevas :

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

Enregistrement du résultat

Enfin, immortalisons ce résultat concaténé chef-d'œuvre en l'enregistrant en tant que nouveau fichier image :

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

var opt jpeg.Options
opt.Quality = 80

jpeg.Encode(out, rgba, &opt)

C'est tout ! Vous avez réussi à fusionner plusieurs images en un tout cohérent. Allez-y et partez à la conquête du monde de la manipulation d'images.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3