Home >Backend Development >Golang >How Can I Combine and Rotate Images in Go?
Consider the following scenario:
The goal is to position i1 and i2 over bi at specific angles and create a final image. Coordinates for i1 and i2 are provided along with their rotation angles. i1 and i2 may overlap partially, but a z-index determines which image should appear in the foreground.
The task is to achieve this functionality in Golang.
The Go image package offers image manipulation capabilities, as described in "Image Drawing in Go" (http://golang.org/doc/articles/image_draw.html).
To combine images with rotations, an auxiliary package called graphics-go is recommended. Here's a sample Go program that demonstrates the combination of two images with 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}) }
In this example:
It's important to note that the graphics-go package relies on external libraries that may require installation and setup. Refer to its documentation for details.
The above is the detailed content of How Can I Combine and Rotate Images in Go?. For more information, please follow other related articles on the PHP Chinese website!