我想通过使用blackjack库为 GO 语言编写的“http 上的视频流”添加水印。为此,我找到了一个带有 png 的代码水印。但我无法转换变量 jpeg <-> byte[]。
这是从 cam 获取帧并写入“JpegImage”变量的代码部分。
var jpegImage []byte
frame, err := cam.ReadFrame()
if len(frame) != 0 {
mutex.Lock()
jpegImage = frame
mutex.Unlock()
}
else if err != nil {
panic(err.Error())
}
这是带有“image.jpg”变量的水印代码。
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()
最后,我需要将这两个代码部分结合起来。从凸轮获取框架后;首先将其转换为 jpg,然后将其转换为 png,然后将其转换为 []byte,最后将其分配给“JpegImage”变量。
我希望你能帮助我。