Maison > développement back-end > Golang > le corps du texte

Comment combiner plusieurs images en une seule à la fois ?

Susan Sarandon
Libérer: 2024-11-07 06:07:03
original
180 Les gens l'ont consulté

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)
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!