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
How to fix race condition using Atomic Functions in Golang?
Regular expression to extract numbers from a string in Golang
How to use Ellipsis (...) in Golang?
Sample program to create csv and write data
Sierpinski triangle in Go Programming Language
Pass different types of arguments in variadic function