chips commited on
Commit
e610a17
·
1 Parent(s): 6eba959

working on file input

Browse files
Files changed (2) hide show
  1. __pycache__/app.cpython-311.pyc +0 -0
  2. app.py +42 -35
__pycache__/app.cpython-311.pyc CHANGED
Binary files a/__pycache__/app.cpython-311.pyc and b/__pycache__/app.cpython-311.pyc differ
 
app.py CHANGED
@@ -12,6 +12,7 @@ import uuid
12
  from time import sleep
13
  import json
14
  from functions import combine_images_side_by_side
 
15
 
16
  from dotenv import load_dotenv
17
  load_dotenv()
@@ -33,35 +34,43 @@ def greet_json():
33
 
34
  @app.post("/virtualTryOn", summary="Virtual try on single call",
35
  description="Virtual try on single call for complete outfit try on")
36
- async def virtual_try_on(background_tasks: BackgroundTasks,
37
- talent_trigger_word: str = Form(...),
38
- talent_lora_url: str = Form(...),
39
- num_images: int = 4,
40
- top_garment_image: UploadFile = File(None),
41
- bottom_garment_image: UploadFile = File(None),
42
- top_back_garment_image: UploadFile = File(None),
43
- bottom_back_garment_image: UploadFile = File(None)):
 
44
  """
45
  Pass in the top garment image, bottom garment image, top back garment image, bottom back garment image, talent trigger word, talent lora url and number of images to generate.
46
  Only one front garment image is required, the rest are optional.
47
  Default number of images is 4.
48
  """
49
-
50
  request_id = str(uuid.uuid4())
51
  r.set(request_id, "pending")
52
- # Launch background task
 
 
 
 
 
 
 
53
  background_tasks.add_task(
54
  run_virtual_tryon_pipeline,
55
  request_id,
56
- top_garment_image,
57
- bottom_garment_image,
58
- top_back_garment_image,
59
- bottom_back_garment_image,
60
  talent_trigger_word,
61
  talent_lora_url,
62
  num_images
63
  )
64
- return(request_id)
65
 
66
  @app.get("/status/{request_id}")
67
  async def check_status(request_id: str):
@@ -95,10 +104,10 @@ async def safe_read_file(file: UploadFile):
95
 
96
  async def run_virtual_tryon_pipeline(
97
  request_id,
98
- top_garment_image,
99
- bottom_garment_image,
100
- top_back_garment_image,
101
- bottom_back_garment_image,
102
  talent_trigger_word,
103
  talent_lora_url,
104
  num_images
@@ -107,23 +116,9 @@ async def run_virtual_tryon_pipeline(
107
  r.set(request_id, "checking incoming data...")
108
  front_type = ""
109
  back_type = ""
110
- print("checking incoming data")
111
- # Read all files once at the start
112
- try:
113
- print("reading top front")
114
- top_garment_data = await safe_read_file(top_garment_image)
115
- print("reading bottom front")
116
- bottom_garment_data = await safe_read_file(bottom_garment_image)
117
- print("reading top back")
118
- top_back_garment_data = await safe_read_file(top_back_garment_image)
119
- print("reading bottom back")
120
- bottom_back_garment_data = await safe_read_file(bottom_back_garment_image)
121
- except Exception as e:
122
- print(f"Error reading garment images: {e}")
123
- #return {"error": "Error reading garment images"}
124
-
125
  if top_garment_data is None and bottom_garment_data is None:
126
- print("Missing garment images from front")
127
  return {"error": "Missing garment images"}
128
 
129
  if top_garment_data and bottom_garment_data:
@@ -368,3 +363,15 @@ async def describe_garment(image: UploadFile = File(...)):
368
 
369
 
370
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  from time import sleep
13
  import json
14
  from functions import combine_images_side_by_side
15
+ from typing import Optional
16
 
17
  from dotenv import load_dotenv
18
  load_dotenv()
 
34
 
35
  @app.post("/virtualTryOn", summary="Virtual try on single call",
36
  description="Virtual try on single call for complete outfit try on")
37
+ async def virtual_try_on(
38
+ background_tasks: BackgroundTasks,
39
+ talent_trigger_word: str = Form(...),
40
+ talent_lora_url: str = Form(...),
41
+ num_images: int = 4,
42
+ top_garment_image: UploadFile = File(...),
43
+ bottom_garment_image: UploadFile = File( None),
44
+ top_back_garment_image: UploadFile = File(None),
45
+ bottom_back_garment_image: UploadFile = File(None)):
46
  """
47
  Pass in the top garment image, bottom garment image, top back garment image, bottom back garment image, talent trigger word, talent lora url and number of images to generate.
48
  Only one front garment image is required, the rest are optional.
49
  Default number of images is 4.
50
  """
51
+ print(top_garment_image)
52
  request_id = str(uuid.uuid4())
53
  r.set(request_id, "pending")
54
+
55
+ # Read all files first
56
+ top_garment_data = await safe_read_file(top_garment_image)
57
+ bottom_garment_data = await safe_read_file(bottom_garment_image)
58
+ top_back_garment_data = await safe_read_file(top_back_garment_image)
59
+ bottom_back_garment_data = await safe_read_file(bottom_back_garment_image)
60
+
61
+ # Launch background task with the actual data
62
  background_tasks.add_task(
63
  run_virtual_tryon_pipeline,
64
  request_id,
65
+ top_garment_data,
66
+ bottom_garment_data,
67
+ top_back_garment_data,
68
+ bottom_back_garment_data,
69
  talent_trigger_word,
70
  talent_lora_url,
71
  num_images
72
  )
73
+ return {"request_id": request_id}
74
 
75
  @app.get("/status/{request_id}")
76
  async def check_status(request_id: str):
 
104
 
105
  async def run_virtual_tryon_pipeline(
106
  request_id,
107
+ top_garment_data: bytes,
108
+ bottom_garment_data: bytes,
109
+ top_back_garment_data: bytes,
110
+ bottom_back_garment_data: bytes,
111
  talent_trigger_word,
112
  talent_lora_url,
113
  num_images
 
116
  r.set(request_id, "checking incoming data...")
117
  front_type = ""
118
  back_type = ""
119
+
120
+ # Now we can use the data directly
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  if top_garment_data is None and bottom_garment_data is None:
 
122
  return {"error": "Missing garment images"}
123
 
124
  if top_garment_data and bottom_garment_data:
 
363
 
364
 
365
 
366
+ @app.post("/upload")
367
+ async def upload_files(
368
+ name: str = Form(...),
369
+ image1: UploadFile = File(...),
370
+ image2: UploadFile = File(None) # Optional!
371
+ ):
372
+ result = {
373
+ "name": name,
374
+ "image1_filename": image1.filename,
375
+ "image2_filename": image2.filename if image2 else "Not provided"
376
+ }
377
+ return result