CherryPy、matplotlibからの画像の読み込み、または一般的な
-
05-07-2019 - |
質問
私が何を間違えているのかよくわかりません。読みたいものを教えていただければ素晴らしいと思います。最初のCherryPyチュートリアル「hello world」を受講しました。小さなmatplotlibプロットを追加しました。 質問1:ファイルが保存される場所を知るにはどうすればよいですか?ファイルを実行している場所です。 質問2:ブラウザで画像を開いたり表示したりできないようです。ブラウザでソースを表示すると、完全な画像パスを含めても、すべてが正しく見えますが、運はありません。 私の問題はパスにあると思いますが、何が起こっているかのメカニズムがわからない
助けてくれてありがとう ヴィンセント
import cherrypy
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
class HelloWorld:
def index(self):
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1,2,3])
fig.savefig('test.png')
return ''' <img src="test.png" width="640" height="480" border="0" /> '''
index.exposed = True
import os.path
tutconf = os.path.join(os.path.dirname(__file__), 'tutorial.conf')
if __name__ == '__main__':
cherrypy.quickstart(HelloWorld(), config=tutconf)
else:
cherrypy.tree.mount(HelloWorld(), config=tutconf)
解決
以下に私のために働いたものがありますが、先に進む前にこのページを読むことをお勧めします静的コンテンツを含むディレクトリの構成方法について。
質問1:ファイルの保存場所を知る方法
ファイルの保存場所を指定すると、ファイルを見つけるプロセスが簡単になります。
たとえば、「img」というサブディレクトリに画像ファイルを保存できます。次のようなCherryPyアプリケーションディレクトリ内:
fig.savefig('img/test.png') # note: *no* forward slash before "img"
そして次のように表示します:
return '<img src="/img/test.png" />' # note: forward slash before "img"
質問2:ブラウザーで画像を開いたり表示したりできる[できない]ようです。
これは、静的画像をCherryPyアプリケーションで使用できるようにするために使用した1つの方法です。
if __name__ == '__main__':
import os.path
currdir = os.path.dirname(os.path.abspath(__file__))
conf = {'/css/style.css':{'tools.staticfile.on':True,
'tools.staticfile.filename':os.path.join(currdir,'css','style.css')},
'/img':{'tools.staticdir.on':True,
'tools.staticdir.dir':os.path.join(currdir,'img')}}
cherrypy.quickstart(root, "/", config=conf)
所属していません StackOverflow