Heim  >  Fragen und Antworten  >  Hauptteil

Das mit Flask angezeigte Bild ist falsch oder beschädigt

Ich richte eine Webanwendung ein, in der ich einige Bilder anzeigen muss. Die Bilder, die ich von der API erhalte, konvertieren den Matplotlib-Plot in PNG und senden ihn dann mithilfe der io-Bibliothek an die Hauptwebanwendung. Daher erscheinen die Bilder, die ich auf der Seite anzeige, fast immer falsch oder falsch. Aber wenn ich sie über das Kontextmenü auf einer neuen Seite öffne, funktionieren sie einwandfrei.

Also dieser Code zum Senden von Bildern

@app.route('/send-data-a', methods=['GET'])
def send_data_user_dynamic():
...some code for diagram...
image_stream1 = io.BytesIO()
        plt.savefig(image_stream1, format='png')
        image_stream1.seek(0)
        plt.close(fig)

        return send_file(image_stream1, mimetype='image/png')

Ich habe versucht, den Zeitstempel in die Haupt-App einzufügen, damit der Link eindeutig ist, aber das hat nicht geholfen

@app.route('/data', methods=['GET'])
def data():
    timestamp = int(time.time())

    user_dynamic = requests.get(f'http://127.0.0.1:5000/send-data-a?timestamp={timestamp}')
    user_amount = requests.get(f'http://127.0.0.1:5000/send-data-b?timestamp={timestamp}')
    kp_month = requests.get(f'http://127.0.0.1:5000/send-data-c?timestamp={timestamp}')
    kp_week = requests.get(f'http://127.0.0.1:5000/send-data-d?timestamp={timestamp}')

    return render_template('second.html',
                           user_dynamic=user_dynamic.url,
                           user_amount=user_amount.url,
                           kp_month=kp_month.url,
                           kp_week=kp_week.url)
if __name__ == '__main__':
    app.run(debug=True, port=5001)

Und es gibt eine HTML-Vorlage, um sie auszugeben

<div class="diagram">
        <img src="{{ user_dynamic }}" alt="user_dynamic">
        <figcaption>some text</figcaption>
    </div>

P粉299174094P粉299174094374 Tage vor627

Antworte allen(1)Ich werde antworten

  • P粉701491897

    P粉7014918972023-09-12 21:42:47

    import base64
    
    user_dynamic_response = requests.get('http://127.0.0.1:5000/send-data-a')
    user_amount_response = requests.get('http://127.0.0.1:5000/send-data-b')
    kp_month_response = requests.get('http://127.0.0.1:5000/send-data-c')
    kp_week_response = requests.get('http://127.0.0.1:5000/send-data-d')
    
    user_dynamic_image_data = base64.b64encode(user_dynamic_response.content).decode('utf-8')
    user_amount_image_data = base64.b64encode(user_amount_response.content).decode('utf-8')
    kp_month_image_data = base64.b64encode(kp_month_response.content).decode('utf-8')
    kp_week_image_data = base64.b64encode(kp_week_response.content).decode('utf-8')
    
    return render_template('second.html',
                           user_dynamic=user_dynamic_image_data,
                           user_amount=user_amount_image_data,
                           kp_month=kp_month_image_data,
                           kp_week=kp_week_image_data)

    所以呃这段代码解决了问题

    Antwort
    0
  • StornierenAntwort