通过 goRPC 发送和图像
Posted
技术标签:
【中文标题】通过 goRPC 发送和图像【英文标题】:sending and image through goRPC 【发布时间】:2016-04-23 16:26:22 【问题描述】:我想通过 rpc 使用 golang 数据包 valyala goRPC 发送图像,但在服务器中接收图像类型时遇到了一些问题。
这是我的客户端代码,它获取 .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 的图像,我对其进行了解码,但在将其发送到服务器之前,我在客户端上注册了类型。 我的问题是,如何在服务器中注册该类型?我总是在服务器中遇到同样的失败,因为我无法注册该图像类型 /:
提前致谢。
【问题讨论】:
【参考方案1】:类型image.Image
是接口所以不能注册,太抽象了。然而,jpeg 的底层实现是 image.Gray
或 image.YCbCr
,两者都是具体的结构,您可以键入 assert img.(Gray)
来决定哪个。尝试同时注册image.Gray
和image.YCbCr
,断言你有哪个,然后作为具体类型发送。
【讨论】:
以上是关于通过 goRPC 发送和图像的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Telegram Bot API 在消息中发送嵌入图像和文本