CherryPy، قم بتحميل الصورة من matplotlib، أو بشكل عام

StackOverflow https://stackoverflow.com/questions/1603669

  •  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:

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)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top