1

我想通过使用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”变量。

我希望你能帮助我。

4

0 回答 0