Maison  >  Article  >  développement back-end  >  Comment concaténer des images dans Go ?

Comment concaténer des images dans Go ?

DDD
DDDoriginal
2024-11-07 01:45:03925parcourir

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 cette nouvelle toile 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 nouvelle toile. Déterminez la position où vous souhaitez placer la deuxième image, puis dessinez les deux images sur la toile :

// 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 cela chef-d'œuvre concaténé 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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn