2Nike2 commited on
Commit
8004cfc
1 Parent(s): 5d3564f

Add card design functionality to app.py

Browse files
app.py CHANGED
@@ -3,6 +3,7 @@ from PIL import Image as PIL_Image # Renaming to avoid conflict with Image from
3
  from io import BytesIO
4
  import json
5
  import os
 
6
 
7
  import src.constants as constants
8
 
@@ -21,6 +22,13 @@ with open(f'src/display_message_{language}.json', 'r', encoding='utf-8') as f:
21
  model_type_dict = display_message_dict['model_type_dict']
22
  color_dict = display_message_dict['color_dict']
23
 
 
 
 
 
 
 
 
24
  def create_3dmodel(model_no, title, color, mark, historic_site_type, difficulty, description, is_thick, image):
25
 
26
  img_bytearray = BytesIO()
@@ -83,6 +91,18 @@ with gr.Blocks() as demo:
83
  with gr.Column():
84
  title = gr.Textbox(label=display_message_dict['label_title'], placeholder=display_message_dict['placeholder_title'])
85
  model_type = gr.Radio([(model_type_dict[key], key) for key in model_type_dict], value='2', label=display_message_dict['label_card_type'])
 
 
 
 
 
 
 
 
 
 
 
 
86
  with gr.Column():
87
  description = gr.Textbox(lines=2, label=display_message_dict['label_description'], placeholder=display_message_dict['placeholder_description'])
88
  is_thick = gr.Checkbox(label=display_message_dict['label_is_thick'], value=False, info=display_message_dict['info_is_thick'])
 
3
  from io import BytesIO
4
  import json
5
  import os
6
+ import glob
7
 
8
  import src.constants as constants
9
 
 
22
  model_type_dict = display_message_dict['model_type_dict']
23
  color_dict = display_message_dict['color_dict']
24
 
25
+ default_card_design_image_dict = {value: PIL_Image.open(constants.back_card_img_dict[key]).convert('RGB') for (key, value) in model_type_dict.items()}
26
+ def update_card_image(card_design_upload, card_design_dropdown, update_type):
27
+ if update_type == 'Upload':
28
+ return card_design_upload['background']
29
+ else:
30
+ return default_card_design_image_dict[card_design_dropdown]
31
+
32
  def create_3dmodel(model_no, title, color, mark, historic_site_type, difficulty, description, is_thick, image):
33
 
34
  img_bytearray = BytesIO()
 
91
  with gr.Column():
92
  title = gr.Textbox(label=display_message_dict['label_title'], placeholder=display_message_dict['placeholder_title'])
93
  model_type = gr.Radio([(model_type_dict[key], key) for key in model_type_dict], value='2', label=display_message_dict['label_card_type'])
94
+
95
+ with gr.Row():
96
+ with gr.Column():
97
+ card_design_dropdown = gr.Dropdown(list(default_card_design_image_dict.keys()), label=display_message_dict['label_card_design_sample'])
98
+ card_design_upload = gr.ImageEditor(image_mode='RGB', sources="upload", type="pil", crop_size="868:1213", label=display_message_dict['label_card_design_upload'])
99
+ with gr.Column():
100
+ card_design_preview = gr.Image(label=display_message_dict['label_card_design_preview'], type="pil")
101
+ card_design_upload.change(fn=lambda card_design_upload, card_design_dropdown: update_card_image(card_design_upload, card_design_dropdown, 'Upload'),
102
+ inputs=[card_design_upload, card_design_dropdown], outputs=card_design_preview)
103
+ card_design_dropdown.change(fn=lambda card_design_upload, card_design_dropdown: update_card_image(card_design_upload, card_design_dropdown, 'Drop'),
104
+ inputs=[card_design_upload, card_design_dropdown], outputs=card_design_preview)
105
+
106
  with gr.Column():
107
  description = gr.Textbox(lines=2, label=display_message_dict['label_description'], placeholder=display_message_dict['placeholder_description'])
108
  is_thick = gr.Checkbox(label=display_message_dict['label_is_thick'], value=False, info=display_message_dict['info_is_thick'])
src/display_message_en.json CHANGED
@@ -11,6 +11,9 @@
11
  "3": "Fossil",
12
  "4": "Cat"
13
  },
 
 
 
14
  "label_description": "Description",
15
  "placeholder_description": "Please provide a brief description, up to about 90 characters.",
16
  "label_is_thick": "Thickness",
 
11
  "3": "Fossil",
12
  "4": "Cat"
13
  },
14
+ "label_card_design_upload": "Card Design (Upload)",
15
+ "label_card_design_sample": "Card Design (Sample)",
16
+ "label_card_design_preview": "Card Design Preview",
17
  "label_description": "Description",
18
  "placeholder_description": "Please provide a brief description, up to about 90 characters.",
19
  "label_is_thick": "Thickness",
src/display_message_ja.json CHANGED
@@ -11,6 +11,9 @@
11
  "3": "化石",
12
  "4": "猫"
13
  },
 
 
 
14
  "label_description": "説明文",
15
  "placeholder_description": "全角50字程度までの簡単な説明を記載して下さい。",
16
  "label_is_thick": "厚み",
 
11
  "3": "化石",
12
  "4": "猫"
13
  },
14
+ "label_card_design_upload": "カードデザイン (アップロード)",
15
+ "label_card_design_sample": "カードデザイン (サンプル)",
16
+ "label_card_design_preview": "カードデザインプレビュー",
17
  "label_description": "説明文",
18
  "placeholder_description": "全角50字程度までの簡単な説明を記載して下さい。",
19
  "label_is_thick": "厚み",