go/img/img.go

60 lines
946 B
Go
Raw Permalink Normal View History

2024-11-10 11:57:46 -05:00
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
}