[英]Convert Base64 encoded image to a numpy array
我正在通過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))
不得不將數組寫入out.jpg並在數組之后立即重讀,這感覺非常無用。 一定會有更好的辦法。 我嘗試了一些以1D數組結尾的事情...而我的圖像在我的情況下是2D數組(BW圖像)。
nparr = np.fromstring(base64.b64decode(test_image), np.uint8)
當image_np.shape =(2048,3072)時,nparr.shape =(694463,)時會產生
任何想法我怎么能代表像Image.frombase64 :)的np.array嗎? 我知道它不存在,但是如果它能夠以某種方式解釋“文件”而不必先將其保存到磁盤,那將是很棒的。
假設您使用的是PIL,但您不知道圖像類型或尺寸:
from PIL import Image
import base64
import io
import numpy as np
import torch
base64_decoded = base64.b64decode(test_image_base64_encoded)
image = Image.open(io.BytesIO(base64_decoded))
image_np = np.array(image)
image_torch = torch.tensor(np.array(image))
我認為io.BytesIO
是您缺少的關鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.