2013-04-19 2 views
13

Je veux trouver quelque chose sur la création d'exemples d'image de filigrane, écrits en langage Go!Manipuler des images de filigrane avec Go

J'ai besoin d'une image PNG pour l'image de filigrane, qui peut être appliqué à d'autres formats PNG, GIF, JPEG, etc.,

J'espère que vous pouvez me donner quelques exemples pratiques.

+0

Voir cet article pour la manipulation d'images: http://golang.org/doc/articles/image_draw.html. Certains exemples semblent couvrir vos besoins, en mélangeant essentiellement une image à une autre avec une transparence alpha. – Mikke

Répondre

27

Comme déjà mentionné, vous pouvez filigraner des images avec le package image/dessin.

Voici un exemple rapide et pratique, l'ajout d'une image png transparent à une image jpeg et enregistrer en jpeg:

package main 

import (
    "image" 
    "image/draw" 
    "image/jpeg" 
    "image/png" 
    "os" 
) 

func main() { 
    imgb, _ := os.Open("image.jpg") 
    img, _ := jpeg.Decode(imgb) 
    defer imgb.Close() 

    wmb, _ := os.Open("watermark.png") 
    watermark, _ := png.Decode(wmb) 
    defer wmb.Close() 

    offset := image.Pt(200, 200) 
    b := img.Bounds() 
    m := image.NewRGBA(b) 
    draw.Draw(m, b, img, image.ZP, draw.Src) 
    draw.Draw(m, watermark.Bounds().Add(offset), watermark, image.ZP, draw.Over) 

    imgw, _ := os.Create("watermarked.jpg") 
    jpeg.Encode(imgw, m, &jpeg.Options{jpeg.DefaultQuality}) 
    defer imgw.Close() 
} 

image.jpg:

enter image description here

watermark.png:

enter image description here

résultat:

enter image description here

+0

Bonne réponse, avec du code et des images! –

+0

ok je vais l'essayer! –

+1

Délicieux exemple, merci beaucoup! – markdsievers

Questions connexes