【发布时间】:2018-11-16 14:03:32
【问题描述】:
我需要通过 http 请求将 PNG 图像提交到黑盒服务器。我使用 python3 在 numpy 64x64x3 数组中生成图像。我目前做的是:
- 生成图像
- 使用 scipy.misc.toimage 将图像保存到磁盘
- 从磁盘打开保存的图像文件
- 使用requests模块发送带有图片打开的图片文件对象的http请求
这工作得很好,但我想摆脱第 2 步和第 3 步,所以我不需要先将我的对象保存到磁盘然后再次加载它。相反,我想将我的 numpy 数组转换为与 http 服务器兼容的文件对象并直接发送。 (就像你从 open() 得到的一样)
我知道例如使用 PIL 从 numpy 数组转换为 PNG 图像很容易,但我只发现如何在一个函数中结合保存到磁盘来做到这一点。
非常感谢您的帮助!
这是我目前的代码:
import numpy as np
import requests
from scipy.misc import toimage
arr = generate64x64x3ImageWithNumpy()
toimage(arr, cmin=0.0, cmax=255.0).save('tmp.png')
d = {'key':API_KEY}
f= {'image': open('tmp.png', 'rb')}
result = requests.post(SERVER_URL, files=f, data=d)
我想要这个:
arr = generate64x64x3ImageWithNumpy()
not_on_disk = numpyArrayToPNGImageWithoutSavingOnDisk(arr)
d = {'key':API_KEY}
f = {'image': not_on_disk}
result = requests.post(SERVER_URL, files=f, data=d)
【问题讨论】:
标签: python numpy http request png