5

我的功能的工作流程如下:

  • 通过python get请求检索jpg
  • 在磁盘上将图像保存为 png(即使下载为 jpg)
  • 使用 imageio 读取磁盘映像并将其转换为 numpy 数组
  • 使用数组

这就是我要保存的内容:

response = requests.get(urlstring, params=params)
      if response.status_code == 200:
            with open('PATH%d.png' % imagenumber, 'wb') as output:
                output.write(response.content)

这就是我将 png 加载和转换为 np.array 的方法

imagearray = im.imread('PATH%d.png' % imagenumber)

由于我不需要永久存储下载的内容,因此我尝试修改我的函数,以便直接将 response.content 转换为 Numpy 数组。不幸的是,每个类似 imageio 的库都以相同的方式从磁盘读取 uri 并将其转换为 np.array。

我试过了,但显然它没有用,因为它需要输入 uri

response = requests.get(urlstring, params=params)
imagearray = im.imread(response.content))

有没有办法克服这个问题?如何在 np.array 中转换我的 response.content?

4

2 回答 2

5

imageio.imread 能够从 url 读取:

import imageio

url = "https://example_url.com/image.jpg"

# image is going to be type <class 'imageio.core.util.Image'>
# that's just an extension of np.ndarray with a meta attribute

image = imageio.imread(url)

您可以在文档中查找更多信息,它们也有示例:https ://imageio.readthedocs.io/en/stable/examples.html

于 2019-03-14T01:52:46.417 回答
-1

您可以使用BytesIOas file 跳过写入实际文件。

bites = BytesIO(base64.b64decode(response.content))

现在你拥有它BytesIO,所以你可以像使用文件一样使用它:

img = Image.open(bites)
img_np = np.array(im)
于 2019-03-13T23:00:00.253 回答