Heim >Backend-Entwicklung >Golang >Wie kann ich Bilder in Go kombinieren und drehen?

Wie kann ich Bilder in Go kombinieren und drehen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-30 11:07:101006Durchsuche

How Can I Combine and Rotate Images in Go?

Bildmanipulation mit Rotationen mit Go

Problem

Stellen Sie sich das folgende Szenario vor:

  • Ein Hintergrundbild (bi )
  • Bild1 (i1)
  • Bild2 (i2)

Das Ziel besteht darin, i1 und i2 in bestimmten Winkeln über Bi zu positionieren und ein endgültiges Bild zu erstellen. Die Koordinaten für i1 und i2 werden zusammen mit ihren Drehwinkeln bereitgestellt. i1 und i2 können sich teilweise überlappen, aber ein Z-Index bestimmt, welches Bild im Vordergrund erscheinen soll.

Die Aufgabe besteht darin, diese Funktionalität in Golang zu erreichen.

Lösung

Das Go-Bildpaket bietet Bildbearbeitungsfunktionen, wie unter „Bildzeichnen in Go“ beschrieben. (http://golang.org/doc/articles/image_draw.html).

Um Bilder mit Rotationen zu kombinieren, wird ein Hilfspaket namens Graphics-go empfohlen. Hier ist ein Beispiel für ein Go-Programm, das die Kombination zweier Bilder mit Drehungen demonstriert:

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

In diesem Beispiel:

  • Zwei Bilder, „arrow1.jpg“ und „arrow2.jpg“. ", werden in den Speicher geladen.
  • Ein neues RGBA-Bild „m" wird mit den gewünschten Ausgabeabmessungen erstellt.
  • Das erste Das Bild „img1“ wird am Ursprung auf „m“ gezeichnet.
  • Das zweite Bild „img2“ wird gedreht und in einem bestimmten Winkel und Versatz auf „m“ gezeichnet.
    Das Ergebnis Das kombinierte Bild wird als „new.jpg“ gespeichert.

Es ist wichtig zu beachten, dass das Graphics-Go-Paket auf externen Bibliotheken basiert, die möglicherweise installiert und eingerichtet werden müssen. Weitere Informationen finden Sie in der Dokumentation.

Das obige ist der detaillierte Inhalt vonWie kann ich Bilder in Go kombinieren und drehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn