phyloforfun commited on
Commit
7b8df6e
1 Parent(s): 22e0bab

file upload gallery

Browse files
Files changed (1) hide show
  1. app.py +22 -8
app.py CHANGED
@@ -279,20 +279,26 @@ def create_space_saver():
279
  st.session_state.config['leafmachine']['project']['delete_temps_keep_VVE'] = st.checkbox("Delete Temporary Files (KEEP files required for VoucherVisionEditor)", st.session_state.config['leafmachine']['project'].get('delete_temps_keep_VVE', False))
280
  st.session_state.config['leafmachine']['project']['delete_all_temps'] = st.checkbox("Keep only the final transcription file", st.session_state.config['leafmachine']['project'].get('delete_all_temps', False),help="*WARNING:* This limits your ability to do quality assurance. This will delete all folders created by VoucherVision, leaving only the `transcription.xlsx` file.")
281
 
282
- def save_uploaded_file(directory, img_file):
283
  if not os.path.exists(directory):
284
  os.makedirs(directory)
285
  # Assuming the uploaded file is an image
286
- with Image.open(img_file) as image:
 
 
 
 
 
 
287
  full_path = os.path.join(directory, img_file.name)
288
- image.save(full_path, "JPEG")
289
- # Return the full path of the saved image
290
- return full_path
291
 
292
  def delete_directory(dir_path):
293
  try:
294
  shutil.rmtree(dir_path)
295
  st.session_state['input_list'] = []
 
296
  st.success(f"Deleted previously uploaded images, making room for new images: {dir_path}")
297
  except OSError as e:
298
  st.error(f"Error: {dir_path} : {e.strerror}")
@@ -1192,6 +1198,7 @@ def content_tab_settings():
1192
  ### Input Images Local
1193
  with col_local_1:
1194
  st.session_state['dir_uploaded_images'] = os.path.join(st.session_state.dir_home,'uploads')
 
1195
  uploaded_files = st.file_uploader("Upload Images", type=['jpg', 'jpeg'], accept_multiple_files=True)
1196
  if uploaded_files:
1197
  # Clear input image gallery and input list
@@ -1201,15 +1208,20 @@ def content_tab_settings():
1201
  # Process the new iamges
1202
  for uploaded_file in uploaded_files:
1203
  file_path = save_uploaded_file(st.session_state['dir_uploaded_images'], uploaded_file)
 
 
 
 
1204
  st.session_state['input_list'].append(file_path)
 
1205
  print(uploaded_file.name)
1206
 
1207
  with col_local_2:
1208
- if st.session_state['input_list']:
1209
  st.subheader('Image Gallery')
1210
- # selected_img = image_select("Uploaded Images Ready for Transcription", st.session_state['input_list'], use_container_width=False)
1211
  # st.image(st.session_state['input_list'])
1212
- display_image_gallery()
1213
  # st.button("Clear Staged Images",on_click=delete_directory, args=[st.session_state['dir_uploaded_images']])
1214
 
1215
  with col_cropped_1:
@@ -1499,6 +1511,8 @@ if 'zip_filepath' not in st.session_state:
1499
  st.session_state['zip_filepath'] = None
1500
  if 'input_list' not in st.session_state:
1501
  st.session_state['input_list'] = []
 
 
1502
 
1503
 
1504
  # if not st.session_state.private_file:
 
279
  st.session_state.config['leafmachine']['project']['delete_temps_keep_VVE'] = st.checkbox("Delete Temporary Files (KEEP files required for VoucherVisionEditor)", st.session_state.config['leafmachine']['project'].get('delete_temps_keep_VVE', False))
280
  st.session_state.config['leafmachine']['project']['delete_all_temps'] = st.checkbox("Keep only the final transcription file", st.session_state.config['leafmachine']['project'].get('delete_all_temps', False),help="*WARNING:* This limits your ability to do quality assurance. This will delete all folders created by VoucherVision, leaving only the `transcription.xlsx` file.")
281
 
282
+ def save_uploaded_file(directory, img_file, image=None):
283
  if not os.path.exists(directory):
284
  os.makedirs(directory)
285
  # Assuming the uploaded file is an image
286
+ try:
287
+ with Image.open(img_file) as image:
288
+ full_path = os.path.join(directory, img_file.name)
289
+ image.save(full_path, "JPEG")
290
+ # Return the full path of the saved image
291
+ return full_path
292
+ except:
293
  full_path = os.path.join(directory, img_file.name)
294
+ image.save(img_file, "JPEG")
295
+ return directory
 
296
 
297
  def delete_directory(dir_path):
298
  try:
299
  shutil.rmtree(dir_path)
300
  st.session_state['input_list'] = []
301
+ st.session_state['input_list_small'] = []
302
  st.success(f"Deleted previously uploaded images, making room for new images: {dir_path}")
303
  except OSError as e:
304
  st.error(f"Error: {dir_path} : {e.strerror}")
 
1198
  ### Input Images Local
1199
  with col_local_1:
1200
  st.session_state['dir_uploaded_images'] = os.path.join(st.session_state.dir_home,'uploads')
1201
+ st.session_state['dir_uploaded_images_small'] = os.path.join(st.session_state.dir_home,'uploads_small')
1202
  uploaded_files = st.file_uploader("Upload Images", type=['jpg', 'jpeg'], accept_multiple_files=True)
1203
  if uploaded_files:
1204
  # Clear input image gallery and input list
 
1208
  # Process the new iamges
1209
  for uploaded_file in uploaded_files:
1210
  file_path = save_uploaded_file(st.session_state['dir_uploaded_images'], uploaded_file)
1211
+ img = Image.open(file_path)
1212
+ img.thumbnail((120, 120), Image.Resampling.LANCZOS)
1213
+ file_path_small = save_uploaded_file(st.session_state['dir_uploaded_images_small'], uploaded_file.name, img)
1214
+
1215
  st.session_state['input_list'].append(file_path)
1216
+ st.session_state['input_list_small'].append(file_path_small)
1217
  print(uploaded_file.name)
1218
 
1219
  with col_local_2:
1220
+ if st.session_state['input_list_small']:
1221
  st.subheader('Image Gallery')
1222
+ selected_img = image_select("Uploaded Images Ready for Transcription", st.session_state['input_list_small'], use_container_width=False)
1223
  # st.image(st.session_state['input_list'])
1224
+ # display_image_gallery()
1225
  # st.button("Clear Staged Images",on_click=delete_directory, args=[st.session_state['dir_uploaded_images']])
1226
 
1227
  with col_cropped_1:
 
1511
  st.session_state['zip_filepath'] = None
1512
  if 'input_list' not in st.session_state:
1513
  st.session_state['input_list'] = []
1514
+ if 'input_list_small' not in st.session_state:
1515
+ st.session_state['input_list_small'] = []
1516
 
1517
 
1518
  # if not st.session_state.private_file: