2つの画像を重ねる / golang
画像にサイトロゴ画像を重ねる必要が出てきたので書いてみた。
やりたいこと
オリジナル画像にサイトロゴを重ねて合成する。
(まとめサイトなどに盗用されても出どころがわかるようにね。)
コード
package main import ( "fmt" "image" "os" "image/draw" "image/jpeg" ) func main() { originImagePath := "/hogehoge/オリジナル画像.jpg" logoImagePath := "/hogehoge/ロゴ画像.jpg" saveImagePath := "/hogehoge/合成された画像.jpg" originFile, err := os.Open(originImagePath) if err != nil { fmt.Println(err) } logoFile, err := os.Open(logoImagePath) if err != nil { fmt.Println(err) } originImg, _, err := image.Decode(originFile) if err != nil { fmt.Println(err) } logoImg, _, err := image.Decode(logoFile) if err != nil { fmt.Println(err) } //オリジナル画像上のどこからlogoイメージを重ねるか //これだと左上 startPointLogo := image.Point{0, 0} logoRectangle := image.Rectangle{startPointLogo, startPointLogo.Add(logoImg.Bounds().Size())} originRectangle := image.Rectangle{image.Point{0, 0}, originImg.Bounds().Size()} rgba := image.NewRGBA(originRectangle) draw.Draw(rgba, originRectangle, originImg, image.Point{0, 0}, draw.Src) draw.Draw(rgba, logoRectangle, logoImg, image.Point{0, 0}, draw.Over) out, err := os.Create(saveImagePath) if err != nil { fmt.Println(err) } var opt jpeg.Options opt.Quality = 100 jpeg.Encode(out, rgba, &opt) }
以上。