在Python中读取jpeg文件,将其编码为Unicode并将其放入protobuf中

时间:2013-05-18 23:50:13

标签: python unicode protocol-buffers

我正在将图像从python后端传输到c ++后端。我选择了Google protobuf,其结构如下:

message data {
  optional string image = 1;
}

然后我使用Python读取图像并将其放入图像字段:

data = server_pb2.data()
data.image = (open(image_fn).read())

但是protobuf抱怨以下信息:

  

值错误:[十六进制数据]的类型为str,但不是7位ASCII编码。非ASCII字符串必须在添加之前转换为unicode对象。

我尝试了几种方法使数据unicode但没有成功。

也许以前有人遇到过这个问题?或者有更好的方法来传输图像数据吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您应该使用bytes作为.proto文件中的类型,而不是string

bytes用于任意字节序列(例如图像)。 string用于UTF-8或ASCII字符序列(例如文本)。