Giter Site home page Giter Site logo

Watermark with "fogleman/gg" about gg HOT 4 OPEN

WillianBR avatar WillianBR commented on May 28, 2024
Watermark with "fogleman/gg"

from gg.

Comments (4)

splace avatar splace commented on May 28, 2024 2

also use alpha color...
dc.SetRGBA(1, 1, 1,100)
... for a transparent watermark

from gg.

splace avatar splace commented on May 28, 2024 1

you need to translate to the centre of the rotation

(below works, i think, but has changes other than just bug fix.)

package main

import (
	"flag"
	//"fmt"
	"github.com/fogleman/gg"
	"github.com/golang/freetype/truetype"
	"golang.org/x/image/font/gofont/goregular"
)


func main() {

	xPtr := flag.Int("x", 250, "Valor de X")
	yPtr := flag.Int("y", 250, "Valor de Y")
	rotatePtr := flag.Int("rotate", -45, "Angulo de rotação em graus")
	fontSizePtr := flag.Int("fontSize", 32, "Tamanho da fonte")
	sizePtr := flag.Int("size", 500, "Tamanho do Canvas (size x size)")
	txtPtr := flag.String("text", "Willian & Simone", "Texto para imprimir")
	imageFilePtr := flag.String("file", "rotated-text.go.png", "Arquivo para salvar a imagem")
	flag.Parse()

	dc := gg.NewContext(*sizePtr, *sizePtr)
	dc.SetRGB(1, 1, 1)
	dc.Clear()

	font, err := truetype.Parse(goregular.TTF)
	if err != nil {
		panic("truetype.Parse()")
	}
	face := truetype.NewFace(font, &truetype.Options{
		Size: float64(*fontSizePtr),
	})
	dc.SetFontFace(face)

	dc.SetRGB(0, 0, 0)
       // border inset 10px
	dc.DrawRectangle(10, 10, float64(*sizePtr)-20, float64(*sizePtr)-20)
	dc.Stroke()
	dc.Translate(float64(*xPtr), float64(*yPtr))
	dc.Rotate(gg.Radians(float64(*rotatePtr))) // Left to Right and Up
        // does its own centring 
	dc.DrawStringAnchored(*txtPtr, 0, 0,.5,.5)

	w, h := dc.MeasureString(*txtPtr)
       // added border
	dc.DrawRectangle(-w/2-10,-h/2, w+20, h+10)
	dc.Stroke()

	dc.SavePNG(*imageFilePtr)

}

from gg.

WillianBR avatar WillianBR commented on May 28, 2024

I'll check it later, after I get home!

Thank you!

from gg.

WillianBR avatar WillianBR commented on May 28, 2024

Hi @splace,

I tested it and work!

I looks like a missed the detail in the documentation about the function DrawStringAnchored().

I started some test and now I'll look for a function group to save the canvas status (colors, etc.) and restore it after.

And ofcourse, add the code to read a existing image and apply the watermark at it center without compromised the original image & text.

from gg.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.