[英]How to download various data from Streamlit to HDF5 file with `st.download_button`?
[英]How to process data before downloading using st.download_button with on_click callback?
我有一個運行的應用程序,我的 model 給出結果np.ndarray
並且我將結果顯示為st.image(result_matrix)
。 我想添加一個功能,讓我的用戶能夠下載此圖像,但問題是我必須將其轉換為PIL.Image
並將buffer.getvalue()
作為輸入發送到此按鈕。 我也可以這樣做,但我的用戶並不經常下載,為了節省計算能力和負載,我不會將每個結果PIL.Image
。
是否有任何功能可以讓您在處理數據后按需下載數據?
我嘗試執行以下操作,但給了我明顯的錯誤,它不接受numpy
數組:
import streamlit as st
from PIL import Image
import numpy as np
from io import BytesIO
st.session_state['result'] = some_numpy_RGB_array
def process_image():
img = Image.fromarray(st.session_state['result'])
buffer = BytesIO()
img.save(buffer, format="jpeg")
st.session_state['result'] = buffer.getvalue()
_ = st.download_button(label="Download",data=st.session_state['result'],file_name="image.jpeg",mime="image/jpeg",on_click=process_image)
我只知道這里給出的解決方法:
import streamlit as st
def generate_report(repfn):
with open(repfn, 'w') as f:
f.write('Report')
st.write('done report generation')
if st.button('generate report'):
repfn = 'report.pdf'
generate_report(repfn)
with open(repfn, "rb") as f:
st.download_button(
label="Download report",
data=f,
file_name=repfn)
這並不理想,因為用戶必須單擊兩個按鈕:一個用於生成(在您的情況下)圖像,第二個用於實際下載它。 但我想總比沒有好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.