2013-04-19 13 views
13

Chcę znaleźć coś na temat tworzenia przykładów znaków wodnych, napisanych w języku Go!Manipulowanie obrazami znaków wodnych za pomocą Go

muszę obrazu PNG dla obrazu znaku wodnego, które mogą być zastosowane w innych formatach PNG, GIF, JPEG itd

mam nadzieję, że może dać mi kilka praktycznych przykładów.

+0

Zobacz ten artykuł do manipulacji obrazu: http://golang.org/doc/articles/image_draw.html. Niektóre przykłady wydają się zaspokajać twoje potrzeby, zasadniczo łącząc niektóre obrazy z innymi z przezroczystością alfa. – Mikke

Odpowiedz

27

Jak już wspomniano, można oznaczać znaki wodne obrazami za pomocą pakietu obrazków/rysunków.

Oto krótki praktyczny przykład, dodając przezroczysty png obrazu do obrazu JPEG i zapisywanie jako 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

Wynik:

enter image description here

+0

Świetna odpowiedź, z kodem i obrazkami! –

+0

ok, spróbuję! Thk u! –

+1

Pyszny przykład, wielkie dzięki! – markdsievers

Powiązane problemy