Deddy commited on
Commit
d79f802
โ€ข
1 Parent(s): 5373c11

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +64 -37
app.py CHANGED
@@ -1,3 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import os
2
  import gradio as gr
3
  from gradio_client import Client, handle_file
@@ -6,6 +21,7 @@ from PIL import Image
6
  import random
7
  import tempfile # Untuk membuat file sementara
8
  import time # Untuk fungsi penundaan
 
9
 
10
  # Siapkan URL untuk permintaan API Virtual Try-On
11
  url_api = os.environ['url_api']
@@ -27,9 +43,9 @@ def save_temp_image(image_array):
27
  image.save(temp_file.name)
28
  return temp_file.name
29
 
 
30
  # Fungsi untuk memanggil API Virtual Try-On
31
  def virtual_tryon(person_img, garment_img, garment_des, seed, randomize_seed, denoise_steps, is_checked, is_checked_crop):
32
-
33
  # Pilih URL secara acak
34
  selected_api_url = get_random_api_url()
35
  client = Client(selected_api_url)
@@ -38,42 +54,53 @@ def virtual_tryon(person_img, garment_img, garment_des, seed, randomize_seed, de
38
  person_img_path = save_temp_image(person_img)
39
  garment_img_path = save_temp_image(garment_img)
40
 
41
- # Pemanggilan API yang sudah disesuaikan dengan format baru
42
- result = client.predict(
43
- dict={
44
- "background": handle_file(person_img_path),
45
- "layers": [],
46
- "composite": None # Menggunakan None sesuai dengan format yang diberikan
47
- },
48
- garm_img=handle_file(garment_img_path),
49
- garment_des=garment_des, # Deskripsi pakaian dari input pengguna
50
- is_checked=is_checked, # Checkbox apakah checked atau tidak
51
- is_checked_crop=is_checked_crop, # Checkbox untuk cropping
52
- denoise_steps=denoise_steps, # Denoise steps slider
53
- seed=seed,
54
- api_name="/tryon"
55
- )
56
-
57
- # Hapus file sementara setelah selesai
58
- os.remove(person_img_path)
59
- os.remove(garment_img_path)
60
-
61
- # Daftar kalimat acak yang menarik dan lucu
62
- compliments = [
63
- "Anda tampak hebat dengan baju itu!",
64
- "Wow, Anda terlihat sangat memukau sekarang!",
65
- "Siap jadi pusat perhatian dengan outfit ini!",
66
- "Anda terlihat seperti bintang di red carpet!",
67
- "Baju ini benar-benar cocok dengan gaya Anda!",
68
- "Luar biasa! Anda terlihat seperti seorang model profesional!",
69
- "Siapa yang tidak terpesona melihat Anda sekarang?",
70
- "Gaya Anda sangat menakjubkan dengan pakaian ini!",
71
- "Perfect match! Anda terlihat menawan!",
72
- "Siap untuk sesi foto? Anda benar-benar keren!"
73
- ]
74
-
75
- # Mengembalikan hasil dan pesan pujian acak
76
- return result[0], random.choice(compliments), "Proses selesai."
 
 
 
 
 
 
 
 
 
 
 
77
 
78
  # Fungsi untuk menampilkan pesan popup dan menunda eksekusi
79
  def show_popup_and_wait():
 
1
+ """
2
+ Aplikasi Toko Baju Virtual - Virtual Try-On
3
+
4
+ Deskripsi:
5
+ Aplikasi ini memungkinkan pengguna untuk mencoba pakaian secara virtual dengan
6
+ mengunggah gambar diri mereka sendiri dan gambar pakaian yang ingin dicoba.
7
+ Menggunakan teknologi **Virtual Try-On** yang dipanggil melalui API eksternal untuk
8
+ menghasilkan gambar realistis dari pengguna yang mengenakan pakaian yang dipilih.
9
+
10
+ Oleh :
11
+ ยฉ2024 __drat. | ๐Ÿ‡ฎ๐Ÿ‡ฉ Untuk Indonesia Jaya!
12
+
13
+ """
14
+
15
+
16
  import os
17
  import gradio as gr
18
  from gradio_client import Client, handle_file
 
21
  import random
22
  import tempfile # Untuk membuat file sementara
23
  import time # Untuk fungsi penundaan
24
+ from gradio_client.exceptions import AppError # Import untuk menangkap kesalahan Gradio Client
25
 
26
  # Siapkan URL untuk permintaan API Virtual Try-On
27
  url_api = os.environ['url_api']
 
43
  image.save(temp_file.name)
44
  return temp_file.name
45
 
46
+
47
  # Fungsi untuk memanggil API Virtual Try-On
48
  def virtual_tryon(person_img, garment_img, garment_des, seed, randomize_seed, denoise_steps, is_checked, is_checked_crop):
 
49
  # Pilih URL secara acak
50
  selected_api_url = get_random_api_url()
51
  client = Client(selected_api_url)
 
54
  person_img_path = save_temp_image(person_img)
55
  garment_img_path = save_temp_image(garment_img)
56
 
57
+ try:
58
+ # Pemanggilan API yang sudah disesuaikan dengan format baru
59
+ result = client.predict(
60
+ dict={
61
+ "background": handle_file(person_img_path),
62
+ "layers": [],
63
+ "composite": None # Menggunakan None sesuai dengan format yang diberikan
64
+ },
65
+ garm_img=handle_file(garment_img_path),
66
+ garment_des=garment_des, # Deskripsi pakaian dari input pengguna
67
+ is_checked=is_checked, # Checkbox apakah checked atau tidak
68
+ is_checked_crop=is_checked_crop, # Checkbox untuk cropping
69
+ denoise_steps=denoise_steps, # Denoise steps slider
70
+ seed=seed,
71
+ api_name="/tryon"
72
+ )
73
+
74
+ # Hapus file sementara setelah selesai
75
+ os.remove(person_img_path)
76
+ os.remove(garment_img_path)
77
+
78
+ # Daftar kalimat acak yang menarik dan lucu
79
+ compliments = [
80
+ "Anda tampak hebat dengan baju itu!",
81
+ "Wow, Anda terlihat sangat memukau sekarang!",
82
+ "Siap jadi pusat perhatian dengan outfit ini!",
83
+ "Anda terlihat seperti bintang di red carpet!",
84
+ "Baju ini benar-benar cocok dengan gaya Anda!",
85
+ "Luar biasa! Anda terlihat seperti seorang model profesional!",
86
+ "Siapa yang tidak terpesona melihat Anda sekarang?",
87
+ "Gaya Anda sangat menakjubkan dengan pakaian ini!",
88
+ "Perfect match! Anda terlihat menawan!",
89
+ "Siap untuk sesi foto? Anda benar-benar keren!"
90
+ ]
91
+
92
+ # Ubah bagian return dengan memilih kalimat secara acak
93
+ return result[0], random.choice(compliments), "Proses selesai."
94
+
95
+ except AppError as e:
96
+ # Tangkap AppError dan tampilkan pesan kesalahan kepada pengguna
97
+ error_message = str(e)
98
+ return None, error_message # Menampilkan pesan kesalahan di `result_info`
99
+ except Exception as e:
100
+ # Tangkap kesalahan umum dan tampilkan pesan kesalahan kepada pengguna
101
+ error_message = f"Terjadi kesalahan: {str(e)}"
102
+ return None, error_message
103
+
104
 
105
  # Fungsi untuk menampilkan pesan popup dan menunda eksekusi
106
  def show_popup_and_wait():