我正在通过 base64 编码的 http POST 接收图像。它可以是 JPG 或 BMP。现在我有了图像,我可以在内存中获取它。我找到了如何将它写入磁盘并将其重新读取到一个 numpy 数组中(我实际上需要将它放入一个 torch.tensor 但现在 numpy 就足够了)。
以下是对我有用但效率极低的方法:
import torch
import numpy as np
from PIL import Image
import base64
base64_decoded = base64.b64decode(test_image_base64_encoded)
with open("out.jpg", "wb") as out_file:
out_file.write(base64_decoded)
image = Image.open("out.jpg")
image_np = np.array(image)
image_torch = torch.tensor(np.array(image))
Run Code Online (Sandbox Code Playgroud)
必须将数组写入 out.jpg 以便在将其重新读取到数组中时,感觉非常无用。一定会有更好的办法。我已经尝试了一些以一维数组结尾的东西......我的图像在我的情况下是一个二维数组(BW图像)。
nparr = np.fromstring(base64.b64decode(test_image), np.uint8)
Run Code Online (Sandbox Code Playgroud)
当 nparr.shape = (694463,) 当 image_np.shape = (2048, 3072) 时会产生
知道我如何表示像 Image.frombase64 :) 这样的 np.array 吗?我知道它不存在,但是如果它可以以某种方式解释“文件”而不必先将其保存到磁盘,那就太好了。