Maison >développement back-end >Golang >Comment puis-je combiner et faire pivoter des images dans Go ?

Comment puis-je combiner et faire pivoter des images dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-30 11:07:10972parcourir

How Can I Combine and Rotate Images in Go?

Manipulation d'images avec rotations à l'aide de Go

Problème

Considérez le scénario suivant :

  • Une image d'arrière-plan (bi )
  • Image1 (i1)
  • Image2 (i2)

Le but est de positionner i1 et i2 sur bi sous des angles spécifiques et de créer une image finale. Les coordonnées de i1 et i2 sont fournies ainsi que leurs angles de rotation. i1 et i2 peuvent se chevaucher partiellement, mais un z-index détermine quelle image doit apparaître au premier plan.

La tâche est d'obtenir cette fonctionnalité dans Golang.

Solution

Le package d'images Go offre des capacités de manipulation d'images, comme décrit dans « Dessin d'images dans Go ». (http://golang.org/doc/articles/image_draw.html).

Pour combiner des images avec des rotations, un package auxiliaire appelé graphiques-go est recommandé. Voici un exemple de programme Go qui démontre la combinaison de deux images avec des rotations :

package main

import (
    "fmt"
    "os"
    "image/draw"
    "image"
    "image/jpeg"
    "code.google.com/p/graphics-go/graphics"
)

func main() {
    fImg1, _ := os.Open("arrow1.jpg")
    defer fImg1.Close()
    img1, _, _ := image.Decode(fImg1)

    fImg2, _ := os.Open("arrow2.jpg")
    defer fImg2.Close()
    img2, _, _ := image.Decode(fImg2)

    m := image.NewRGBA(image.Rect(0, 0, 800, 600))
    draw.Draw(m, m.Bounds(), img1, image.Point{0,0}, draw.Src)
    //draw.Draw(m, m.Bounds(), img2, image.Point{-200,-200}, draw.Src)
    graphics.Rotate(m, img2, &graphics.RotateOptions{3.5})

    toimg, _ := os.Create("new.jpg")
    defer toimg.Close()

    jpeg.Encode(toimg, m, &jpeg.Options{jpeg.DefaultQuality})
}

Dans cet exemple :

  • Deux images, "arrow1.jpg" et "arrow2.jpg ", sont chargés en mémoire.
  • Une nouvelle image RGBA "m" est créée avec les dimensions de sortie souhaitées.
  • La première L'image "img1" est dessinée sur "m" à l'origine.
  • La deuxième image, "img2", est pivotée et dessinée sur "m" selon un angle et un décalage spécifiques.
    Le résultat L'image combinée est enregistrée sous "new.jpg".

Il est important de noter que le package graphiques-go repose sur des bibliothèques externes qui peuvent nécessiter une installation et une configuration. Reportez-vous à sa documentation pour plus de détails.

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