2013-04-19 12 views
13

Tôi muốn tìm một cái gì đó về làm cho các ví dụ hình ảnh watermark, được viết bằng ngôn ngữ Go!Thao tác hình ảnh watermark với Go

Tôi cần một hình ảnh PNG cho hình ảnh mờ, có thể áp dụng sang các định dạng khác PNG, GIF, JPEG, vv,

Tôi hy vọng bạn có thể cho tôi một số ví dụ thực tế.

+0

Xem bài viết này cho xử lý ảnh: http://golang.org/doc/articles/image_draw.html. Một số ví dụ dường như đáp ứng nhu cầu của bạn, về cơ bản pha trộn một số hình ảnh vào một hình ảnh khác với độ trong suốt của alpha. – Mikke

Trả lời

27

Như đã đề cập, bạn có thể watermark hình ảnh với gói hình ảnh/vẽ.

Dưới đây là một ví dụ thực tế nhanh chóng, thêm một hình ảnh png trong suốt đối với một hình ảnh jpeg và tiết kiệm như 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

kết quả:

enter image description here

+0

Câu trả lời hay, với mã và hình ảnh! –

+0

okay tôi sẽ thử nó! Thk u! –

+1

Ví dụ ngon, cảm ơn rất nhiều! – markdsievers