60 lines
946 B
Go
60 lines
946 B
Go
package img
|
|
|
|
import (
|
|
"image"
|
|
"image/draw"
|
|
"image/png"
|
|
"os"
|
|
|
|
"github.com/anthonynsimon/bild/adjust"
|
|
)
|
|
|
|
const (
|
|
StyleDark = 0.70
|
|
)
|
|
|
|
func Overlay(inputFile, overlayFile string, style float64) (err error) {
|
|
thumb, err := os.Open(inputFile)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
overlay, err := os.Open(overlayFile)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
img0, err := png.Decode(thumb)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer thumb.Close()
|
|
|
|
img1, err := png.Decode(overlay)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer overlay.Close()
|
|
|
|
b0 := img0.Bounds()
|
|
b1 := img1.Bounds()
|
|
|
|
img0 = adjust.Brightness(img0, style)
|
|
|
|
offset := image.Pt(b0.Dx()/2-b1.Dx()/2, b0.Dy()/2-b1.Dy()/2)
|
|
|
|
m := image.NewRGBA(b0)
|
|
draw.Draw(m, b0, img0, image.Point{}, draw.Src)
|
|
draw.Draw(m, img1.Bounds().Add(offset), img1, image.Point{}, draw.Over)
|
|
|
|
imgw, err := os.Create(inputFile)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
png.Encode(imgw, m)
|
|
defer imgw.Close()
|
|
|
|
return nil
|
|
}
|