我正在設(shè)置一個網(wǎng)絡(luò)應(yīng)用程序,我需要在其中顯示一些圖像。我從 API 收到的圖像將 matplotlib 圖轉(zhuǎn)換為 png,然后使用 io 庫將其發(fā)送到主 Web 應(yīng)用程序。因此,我在頁面上顯示的圖像幾乎總是顯示為不正確或錯誤。但如果我通過上下文菜單在新頁面中打開它們,它們就可以了。
所以這段發(fā)送圖的代碼
@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')
我嘗試將時間戳放在主應(yīng)用程序中,因此鏈接將是唯一的,但是沒有幫助
@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)
并且有一個 html 模板可以輸出它們
<div class="diagram"> <img src="{{ user_dynamic }}" alt="user_dynamic"> <figcaption>some text</figcaption> </div>
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)
所以呃這段代碼解決了問題