Hi! I’m working on a book recommendation system based on a LDA model and want to show the book options on one page. Right now I’m using st.image() and passing the list of images which comes from a column in the dataframe, and it looks like this:
st.image(filteredImages, width=150, caption=caption)
I’m able to set the width but not the height, so all of them have different heights. I tried using the pillow library to resize each image but the run time increases by a lot and I don’t get the desired image quality:
for image in filteredImages:
r = requests.get(image)
img = Image.open(BytesIO(r.content))
resizedImg = img.resize((225, 325), Image.ANTIALIAS)
resizedImages.append(resizedImg)
I also tried using a beta_container and I get something similar to my desired output but it’s repeating the same picture across the entire row:
with st.beta_container():
for col in st.beta_columns(4):
col.image(filteredImages, width=150)
Any thoughts on how I can get the same height across every picture in a grid?


I’m filtering by author and each author has different number of books, and eventually will be showing only related books based on the LDA model. Some books will have 10 similar books, others might have only 3.






