【问题标题】:In Python 3.8, how do I load image data from a file for inclusion ina JSON object?在 Python 3.8 中,如何从文件加载图像数据以包含在 JSON 对象中?
【发布时间】:2020-08-17 20:17:11
【问题描述】:

我使用的是 Python 3.8。我想将图像字节数据放入 JSON 对象。所以我尝试了这个

with open(os.path.join(dir_path, "../image_data", "myimg.jpg"), mode='rb') as img_file:
    image_data = img_file.read().decode("utf-16")
    my_json_data = {
        "image_data": image_data
        ...
    }

但是image_data = 行给出了这个错误:

UnicodeDecodeError: 'utf-16-le' codec can't decode bytes in position 0-1: illegal UTF-16 surrogate

将数据加载到 JSON 对象中的正确方法是什么?

【问题讨论】:

  • 可能是因为您正在阅读的图像未编码为 utf-16?
  • 图像数据通常是二进制的(由mode='rb' 适当处理)。为什么你认为它是 utf-16?
  • 你打算如何为 json 文件编码 - 因为 JSON 只是文本,你不需要使用 base64 或类似的编码吗?

标签: python json python-3.x file getimagedata


【解决方案1】:

decode 和 encode 处理字符数据。您可以使用它们在字符编码格式之间进行转换,例如 utf-8 和 ASCII。获取纯二进制数据(例如图像)并尝试将其转换为字符是没有意义的。并非每个二进制值都可以转换为字符;大多数字符格式都会留下一些保留或未使用的值。

您需要的是一种简单的原始字节格式。将文件作为字节序列读取;这保留了二进制形式,使您的最终 JSON 使用者可以轻松地利用这些信息。

【讨论】:

    猜你喜欢
    • 2021-04-06
    • 2019-03-06
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 2021-06-06
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多