【问题标题】:Read jpeg file in Python, encode it into Unicode and put it into protobuf在 Python 中读取 jpeg 文件,将其编码为 Unicode 并放入 protobuf
【发布时间】:2013-05-19 10:54:25
【问题描述】:

我正在将图像从 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,但都没有成功。

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

谢谢!

【问题讨论】:

  • 您不会将二进制“编码”为 Unicode - 即向后使用编码器并且未定义结果。她tiny.cc/io - 你应该(就像这里的答案一样)直接存储二进制文件
  • 我试图弄清楚如何将图像读入bytes 字段并忘记我需要.read()。谢谢!

标签: python unicode protocol-buffers


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 2015-07-05
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 2015-07-11
    相关资源
    最近更新 更多