如何通过 HTTP 发送编码和解码的图像

How to send encoded and decoded image over HTTP

我需要通过 HTTP 发送经过编码和解码的图像以及一些元数据。 我想将图像作为二进制数据发送,而不是将它们编码为 base64,因为编码和解码会增加不必要的延迟。

例如,编码后的图像可能如下所示:

img = open(img_file, 'rb').read()

解码后的图像可能如下所示:

img = cv2.imread(img_file)

假设我还需要在 POST 请求中发送一些附加信息,例如图像名称。

最有效的发送方式是什么? Python 中的代码会是什么样子?我需要使用什么 content-type 或其他 headers?

我在网上找到了一些像 this 这样的例子,但他们只发送一张图片,因此将 content-type 设置为 image/jpeg,但我想知道当您还有其他字段要发送。

如果您想发送额外的字段,您有以下几种选择:

  1. Base64 对图像数据进行编码,embed it in a json string 使用您所有的额外数据
  2. 添加 custom HTTP headers 以及您在
  3. 中的字段
  4. 添加您的字段to the image metadata itself

我知道你说过你不想做 1,但如果你从未尝试过,你怎么知道它会增加不必要的延迟?我希望它远小于 HTTP 请求的延迟。选项 2 存在风险,因为 headers 可能会被网络基础设施删除或更改,您的用户可能不希望在 headers 中找到数据。选项 3 在一定程度上取决于数据是什么以及将其放在图像内部是否有意义(以及您的用户是否知道在那里寻找它)