2013-04-19 1 views
13

Я хочу найти что-то о создании примеров водяного знака, написанных на языке Go!Манипулирование изображениями водяных знаков с помощью Go

мне нужен PNG изображение для водяного знака изображения, которые могут быть применены в других форматах PNG, GIF, JPEG и т.д.,

Я надеюсь, что вы можете дать мне некоторые практические примеры.

+0

Смотрите эту статью для работы с изображениями: http://golang.org/doc/articles/image_draw.html. Некоторые из примеров, похоже, охватывают ваши потребности, по сути, смешивая некоторые изображения с другими с альфа-прозрачностью. – Mikke

ответ

27

Как уже упоминалось, вы можете делать водяные знаки с изображением/рисунком.

Вот краткий практический пример, добавив прозрачный PNG изображение в формате JPEG изображения и сохранение в формате 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

Результат:

enter image description here

+0

Отличный ответ, с кодом и фотографиями! –

+0

хорошо, я попробую! Thk u! –

+1

Вкусный пример, спасибо большое! – markdsievers

 Смежные вопросы

  • Нет связанных вопросов^_^