Maison  >  Article  >  développement back-end  >  Comment combiner plusieurs images en une seule à la fois ?

Comment combiner plusieurs images en une seule à la fois ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-07 06:07:03166parcourir

How to Combine Multiple Images into One in Go?

Comment combiner des images dans Go

Dans Go, vous pouvez manipuler des images pour créer une seule image plus grande à partir de plusieurs images plus petites. Pour ce faire, suivez les étapes ci-dessous :

  1. Chargez les images : Utilisez os.Open pour ouvrir les fichiers image et image.Decode pour décoder les images en objets image.Image .
  2. Créer la grande image : Déterminez les dimensions de l'image finale et utilisez image.NewRGBA pour créer une image vide avec ces dimensions.
  3. Dessinez le Première image : Utilisez draw.Draw pour dessiner la première image sur la grande image. Spécifiez le point de départ et l'image source.
  4. Calculez le point de départ de la deuxième image : Déterminez le décalage de la deuxième image dans l'image finale. Il s'agit généralement de la largeur de la première image.
  5. Dessinez la deuxième image : Utilisez draw.Draw pour dessiner la deuxième image sur la grande image. Spécifiez le point de départ et l'image source.
  6. Exportez l'image finale : Utilisez image.Encode pour exporter l'image combinée vers un fichier au format souhaité.

Par exemple, pour créer une concaténation horizontale de deux images, vous pouvez utiliser le code suivant :

import (
    "fmt"
    "image"
    "image/draw"
    "image/jpeg"
    "os"
)

func main() {
    // Load the images
    img1, err := os.Open("test1.jpg")
    if err != nil {
        fmt.Println(err)
    }
    img2, err := os.Open("test2.jpg")
    if err != nil {
        fmt.Println(err)
    }
    img1, _, err = image.Decode(img1)
    if err != nil {
        fmt.Println(err)
    }
    img2, _, err = image.Decode(img2)
    if err != nil {
        fmt.Println(err)
    }

    // Create the large image
    r1 := img1.Bounds()
    r2 := img2.Bounds()
    r := image.Rectangle{image.Point{0, 0}, r2.Max}
    rgba := image.NewRGBA(r)

    // Draw the images
    draw.Draw(rgba, r1, img1, image.Point{0, 0}, draw.Src)
    draw.Draw(rgba, r2, img2, image.Point{r1.Dx(), 0}, draw.Src)

    // Export the final 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)
}

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