How to add Watermark or Merge two image?
In below example image2 will added as Watermark over image1 as a result image3 would be a new image. This is a simple example to merge 2 images.
Example
package main
import (
"image"
"image/draw"
"image/jpeg"
"image/png"
"os"
"log"
)
func main() {
image1,err := os.Open("jellyfish.jpg")
if err != nil {
log.Fatalf("failed to open: %s", err)
}
first, err := jpeg.Decode(image1)
if err != nil {
log.Fatalf("failed to decode: %s", err)
}
defer image1.Close()
image2,err := os.Open("pokeball.png")
if err != nil {
log.Fatalf("failed to open: %s", err)
}
second,err := png.Decode(image2)
if err != nil {
log.Fatalf("failed to decode: %s", err)
}
defer image2.Close()
offset := image.Pt(300, 200)
b := first.Bounds()
image3 := image.NewRGBA(b)
draw.Draw(image3, b, first, image.ZP, draw.Src)
draw.Draw(image3, second.Bounds().Add(offset), second, image.ZP, draw.Over)
third,err := os.Create("result.jpg")
if err != nil {
log.Fatalf("failed to create: %s", err)
}
jpeg.Encode(third, image3, &jpeg.Options{jpeg.DefaultQuality})
defer third.Close()
}
Most Helpful This Week
Replace any non-alphanumeric character sequences with a dash using Regex
Example: Arrays of Arrays, Arrays of Slices, Slices of Arrays and Slices of Slices
How to read/write from/to file in Golang?
Strip all white spaces, tabs, newlines from a string
Simple function with return value in Golang
How to get first and last element of slice in Golang?