在 php 中获取 numpy 图像
Get numpy image in php
我尝试在我的 Web 应用程序中使用来自 raspberry pi 的图像,其中所有图像都插入到 RabbitMq 队列中。图像在我使用此功能转换后发布:
def im2json(im):
imdata = pickle.dumps(im)
jstr = json.dumps(base64.b64encode(imdata).decode('ascii'))
return jstr
在 php 我试过这个:
$imgString = $jsonRes->hits->hits[0]->_source->image;
echo "<img src='data:image/jpeg;base64, " . base64_encode($imgString) . "' />";
但是它不起作用,是不是因为 python 脚本我错过了什么?
这是结果:
图像存储在 Elasticsearch 中,这就是我使用 hits->hits 的原因。
它变得比我在评论中写的要长,所以尝试做出回答:
import base64
import io
import json
import numpy as np
from PIL import Image
def im2json(im):
to_save = Image.fromarray(np.array(im))
target = io.BytesIO()
to_save.save(target, 'JPEG')
target.seek(0) # Go to the beginning of stream
# No pickle is needed
return json.dumps(base64.b64encode(target.read()).decode('ascii'))
php
一侧
$imgString = $jsonRes->hits->hits[0]->_source->image;
echo "<img src='data:image/jpeg;base64, " . $imgString . "' />";
你不应该 pickle
BytesIO
本身,你只需要对其二进制内容进行 base64 编码。
如果它不起作用,请尝试删除 json.dumps
,我不确定是否真的需要引号。
我尝试在我的 Web 应用程序中使用来自 raspberry pi 的图像,其中所有图像都插入到 RabbitMq 队列中。图像在我使用此功能转换后发布:
def im2json(im):
imdata = pickle.dumps(im)
jstr = json.dumps(base64.b64encode(imdata).decode('ascii'))
return jstr
在 php 我试过这个:
$imgString = $jsonRes->hits->hits[0]->_source->image;
echo "<img src='data:image/jpeg;base64, " . base64_encode($imgString) . "' />";
但是它不起作用,是不是因为 python 脚本我错过了什么? 这是结果:
图像存储在 Elasticsearch 中,这就是我使用 hits->hits 的原因。
它变得比我在评论中写的要长,所以尝试做出回答:
import base64
import io
import json
import numpy as np
from PIL import Image
def im2json(im):
to_save = Image.fromarray(np.array(im))
target = io.BytesIO()
to_save.save(target, 'JPEG')
target.seek(0) # Go to the beginning of stream
# No pickle is needed
return json.dumps(base64.b64encode(target.read()).decode('ascii'))
php
一侧
$imgString = $jsonRes->hits->hits[0]->_source->image;
echo "<img src='data:image/jpeg;base64, " . $imgString . "' />";
你不应该 pickle
BytesIO
本身,你只需要对其二进制内容进行 base64 编码。
如果它不起作用,请尝试删除 json.dumps
,我不确定是否真的需要引号。