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:
watermark.png:
kết quả:
Nguồn
2013-04-19 14:05:14
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