使用Go操作水印图像 [英] Manipulating watermark images with Go
本文介绍了使用Go操作水印图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要一个用于水印图像的PNG图像,它可以应用于其他格式PNG,GIF,JPEG等,
我希望你能给我一些实际的例子。
解决方案
如前所述,您可以使用图像/绘制包对图像进行水印处理。
下面是一个快速实用的示例, image to jpeg image and save as 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)
水印,_:= png.Decode(wmb)
defer wmb.Close()
偏移量:= 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:
结果:
I want to find something about making the watermark image examples, written in Go language!
I need a PNG image for the watermark image, that can be applied to other formats PNG, GIF, JPEG etc.,
I hope you can give me some practical examples.
解决方案
As already mentioned, you can watermark images with the image/draw package.
Here's a quick practical example, adding a transparent png image to a jpeg image and saving as 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:
result:
这篇关于使用Go操作水印图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文