Maison  >  Questions et réponses  >  le corps du texte

L'image affichée à l'aide de Flask est erronée ou corrompue

Je mets en place une application Web dans laquelle je dois afficher des images. Les images que je reçois de l'API convertissent le tracé matplotlib en png, puis l'envoient à l'application Web principale à l'aide de la bibliothèque io. Par conséquent, les images que j’affiche sur la page semblent presque toujours incorrectes ou fausses. Mais si je les ouvre dans une nouvelle page via le menu contextuel, ils fonctionnent correctement.

Donc ce code pour envoyer des photos

@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')

J'ai essayé de mettre l'horodatage dans l'application principale pour que le lien soit unique mais cela n'a pas aidé

@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)

Et il existe un modèle HTML pour les afficher

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

P粉299174094P粉299174094374 Il y a quelques jours628

répondre à tous(1)je répondrai

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

    Alors euh, ce code résout le problème

    répondre
    0
  • Annulerrépondre