在 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,我不确定是否真的需要引号。