我想使用golang数据包valyala goRPC通过rpc发送图像,我在服务器中接收图像类型时遇到了一些问题。
这是我的客户端代码,他们拍摄了一张.jpg图像,对其进行解码并通过rpc发送:
c := &gorpc.Client{
// TCP address of the server.
Addr: "127.0.0.1:12345",
}
c.Start()
reader, err := os.Open("barranco.jpg")
if err != nil{
log.Fatal(err)
}
defer reader.Close()
img, _, err := image.Decode(reader)
if err != nil {
log.Fatal(err)
}
fmt.Print("Pulsa intro para enviar.\n")
bufio.NewReader(os.Stdin).ReadBytes('\n')
gorpc.RegisterType(img)
resp, err := c.Call(img)
所以在这段代码中,我拍摄了一个名为barranco.jpg的图像,我对其进行解码,但在将其发送到服务器之前,我在客户端上注册了该类型。 我的问题是,如何在服务器中注册该类型?我总是在服务器中遇到相同的故障,因为我无法注册该图像类型/:
提前致谢。
答案 0 :(得分:1)
类型image.Image
是一个接口,所以你不能注册它,它太抽象了。然而,jpeg的底层实现是image.Gray
或image.YCbCr
,两个具体的结构,你可以输入assert img.(Gray)
来决定哪个。尝试注册image.Gray
和image.YCbCr
,断言你拥有的,然后发送为具体类型。