0

在我的 Choregraphe 项目中,机器人调用 API 来检索将在其平板电脑中显示的图像(以 base64 编码)。

因此机器人调用 API,获取数据的 JSON 并将其保存在文件中。之后,它打开文件,读取图像并对其进行解码。解码后的图像被保存为一个时间文件,最后,它调用这个时间图像在平板电脑上显示tabletService.showImage(url)

我遇到的问题是机器人没有显示任何图像,也没有抛出任何错误或异常。我不知道如何解决它。

def onInput_onStart(self):
    # We create TabletService here in order to avoid
    # problems with connections and disconnections of the tablet during the life of the application
    import json
    import base64
    import tempfile

    tabletService = self._getTabletService()
    if tabletService:
        try:
            senaleticas = ''
            with open('senaleticas.json', 'r') as fr:
                strSenaleticas = fr.read()

            senaleticas = json.loads(strSenaleticas)

            image64 = senaleticas[0]['_mapa']
            image = base64.b64decode(image64)

            f = tempfile.NamedTemporaryFile()
            f.write(image)

            url = self._getAbsoluteUrl(f.name)

            self.logger.info("-> " + url)

            tabletService.showImage(url)
        except Exception as err:
            self.logger.error("Error during ShowImage : %s " % err)
            self.onStopped()
    else:
        self.logger.warning("No ALTabletService, can't display the image.")
        self.onStopped()

日志显示 varlog具有值 http://198.18.0.1/apps/.lastUploadedChoregrapheBehavior/tmp/tmpEhJeOS

在此处输入图像描述

注意:如果有另一种显示图像的方式,我对此很感兴趣。

4

1 回答 1

0

尝试使用正确的图像文件扩展名,例如png

f = tempfile.NamedTemporaryFile(suffix='.png')
于 2017-08-26T22:18:19.597 回答