Pythonのmatplotlibからの.pngグラフのbase64文字列表現とそれに関するいくつかのテキスト情報を含むJSON応答をDjangoで送信しようとしています。画像を base64 文字列に変換しようとすると、いくつかの問題が発生します。
# Initialize objects imma need
img_buffer = StringIO.StringIO()
out = StringIO.StringIO()
canvas = FigureCanvasAgg(fig)
# Print and convert
canvas.print_png(img_buffer)
base64.encode(img_buffer, out)
img_str = out.getvalue()
# Make dictionary
logger.info(img_str)
resp_d = {'image': img_str, 'nodes': str(pxs)}
return HttpResponse(json.dumps(resp_d), content_type='application/json')
注: fig は私の matplotlibFigure()
です。これを応答に直接出力して表示したので、適切に作成されていることがわかります。
残念ながら、私は画像を取得できず、ロガーは img_str が空であることを示しています。私は周りを見回して、fig.savefig(img_buffer)
の代わりに使用するなど、いくつかのことを試しましたcanvas.print_png(img_buffer)
が、成功しませんでした. 私は完全に困惑しています...何が起こっているのでしょうか?本当にありがとう!