Girando sul web ho trovato questo bello esempio di come usare un watermark in golang reperibile al seguente link:
http://stackoverflow.com/questions/16100023/manipulating-watermark-images-with-go
Adesso vediamo il codice con i relativi commenti 😀
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
package main // Importo librerie grafice(image) e os(sistema) che ci serviranno per creare la nostra immagine import ( "image" "image/draw" "image/jpeg" "image/png" "os" ) func main() { // Apro immaggine originale imgb, _ := os.Open("image.jpg") img, _ := jpeg.Decode(imgb) defer imgb.Close() // Apro il watermark da aggiungere al originale wmb, _ := os.Open("watermark.png") watermark, _ := png.Decode(wmb) defer wmb.Close() //Disegno watermark sul immagine originale //Posizione del immagine in 0,0 offset := image.Pt(0, 0) //Creo nuova immagine RGB b := img.Bounds() m := image.NewRGBA(b) //Disegno il watermark sopra immagine originale draw.Draw(m, b, img, image.ZP, draw.Over) draw.Draw(m, watermark.Bounds().Add(offset), watermark, image.ZP, draw.Over) //Creo immagine con watermark imgw, _ := os.Create("watermarked.jpg") //Riempo immagine con i dati presi da m che attraverso Draw abbiamo creato la nostra immagine con watermark jpeg.Encode(imgw, m, &jpeg.Options{jpeg.DefaultQuality}) defer imgw.Close() } |