123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- package watermark
- import (
- _ "embed"
- "image"
- "image/color"
- "image/draw"
- "image/jpeg"
- "image/png"
- "os"
- "time"
- "github.com/goki/freetype"
- "github.com/goki/freetype/truetype"
- )
- var ttfBytes []byte
- func Add(path string) error {
- f, err := os.Open(path)
- if err != nil {
- return err
- }
- defer f.Close()
- origin, err := png.Decode(f)
- if err != nil {
- return err
- }
-
- newImage := image.NewRGBA(origin.Bounds())
-
- draw.Draw(newImage, origin.Bounds(), origin, image.Point{}, draw.Over)
-
- font, err := GetFont()
- if err != nil {
- return err
- }
- fc := freetype.NewContext()
- fc.SetDPI(72)
- fc.SetFont(font)
- fc.SetFontSize(24)
- fc.SetClip(newImage.Bounds())
- fc.SetDst(newImage)
-
-
- fc.SetSrc(image.NewUniform(color.RGBA{R: 255, G: 0, B: 0, A: 255}))
- text := "截图时间:" + time.Now().Format("2006-01-02 15:04:05")
-
- fontPt := freetype.Pt(origin.Bounds().Max.X-400, 24)
- if _, err = fc.DrawString(text, fontPt); err != nil {
- return err
- }
-
- created, err := os.Create(path)
- if err != nil {
- return err
- }
- defer created.Close()
-
- if err = jpeg.Encode(created, newImage, &jpeg.Options{Quality: 80}); err != nil {
- return err
- }
- return nil
- }
- func AddTaxErrInfo(path string) error {
- f, err := os.Open(path)
- if err != nil {
- return err
- }
- defer f.Close()
- origin, err := png.Decode(f)
- if err != nil {
- return err
- }
-
- newImage := image.NewRGBA(origin.Bounds())
-
- draw.Draw(newImage, origin.Bounds(), origin, image.Point{}, draw.Over)
-
- font, err := GetFont()
- if err != nil {
- return err
- }
- fc := freetype.NewContext()
- fc.SetDPI(72)
- fc.SetFont(font)
- fc.SetFontSize(24)
- fc.SetClip(newImage.Bounds())
- fc.SetDst(newImage)
-
-
- fc.SetSrc(image.NewUniform(color.RGBA{R: 255, G: 0, B: 0, A: 255}))
- text := "截图时间:" + time.Now().Format("2006-01-02 15:04:05")
-
- fontPt := freetype.Pt(origin.Bounds().Max.X-400, 24)
- if _, err = fc.DrawString(text, fontPt); err != nil {
- return err
- }
- fontPt2 := freetype.Pt(origin.Bounds().Dx()/2-130, origin.Bounds().Dy()/2)
- text2 := "税局页面卡顿,加载失败!"
- if _, err = fc.DrawString(text2, fontPt2); err != nil {
- return err
- }
-
- created, err := os.Create(path)
- if err != nil {
- return err
- }
- defer created.Close()
-
- if err = jpeg.Encode(created, newImage, &jpeg.Options{Quality: 80}); err != nil {
- return err
- }
- return nil
- }
- func GetFont() (*truetype.Font, error) {
- return freetype.ParseFont(ttfBytes)
- }
|