3

我们如何在 python 中接受 json 图像文件?我们josn.loads用于数据,但图像文件呢?

4

2 回答 2

9

JSON 是一种文本格式。由于图像是不透明的二进制数据,因此您需要将该数据编码为文本格式。

Base64 最常用于此类数据,python 可以使用base64模块很好地处理这些数据:

import base64
import json

image = base64.decodestring(json.dumps(data)['image'])

这是 Twitter 支持更新您的个人资料图像的方式。

但是,对图像数据使用 JSON并不是一个好主意,除了非常小的图像。python 中包含的 json 解析器很容易被一个大的有效载荷(如大小合适的图像)过载。

您最好提供一个 REST API,它使用 PUT 或 POST 请求来接受图像,然后使用 URL 就图像进行通信。

于 2012-09-20T11:23:35.293 回答
3

JSON 是JavaScript 对象表示法。它用于使用基本类型、字符串、整数、浮点数、布尔值等来传达信息。

它可用于传递有关资源的元数据,但通常不能用于传递资源本身。

例如,您可能会收到如下 JSON 对象:

a = '''{
  'imageUrl': '/images/image.png',
  'imageName': 'My Image'  
}'''
decoded = json.loads(a)

通常,您使用此表示信息自行检索资源。您可以使用标准库的网络模块在 python 中执行此操作。

import urllib2
img = urllib2.urlopen(decoded.imageUrl).read()
于 2012-09-20T11:23:08.990 回答