Kims12 commited on
Commit
5ad428b
ยท
verified ยท
1 Parent(s): 333f85d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +158 -153
app.py CHANGED
@@ -908,159 +908,165 @@ user_manual_html = """
908
  </div>
909
  """
910
 
911
- # ์‚ฌ์šฉ ์„ค๋ช…์„œ ํƒญ์„ ์ฒซ ๋ฒˆ์งธ๋กœ ๋ฐฐ์น˜
912
- with gr.TabItem("๐Ÿ“š ์‚ฌ์šฉ ์„ค๋ช…์„œ", elem_classes="tab-content"):
913
- gr.HTML("""
914
- <div class="user-manual">
915
- <div class="manual-title"><i class="fas fa-book"></i> ์‚ฌ์šฉ ์„ค๋ช…์„œ</div>
916
-
917
- <div class="manual-section">
918
- <div class="manual-section-title"><i class="fas fa-magic"></i> ์ด์ปค๋จธ์Šค์ „์šฉ ์ด๋ฏธ์ง€ ์ƒ์„ฑ๊ธฐ</div>
919
- <p class="manual-text">
920
- <span style="font-size: 1.1rem; font-weight: 600; color: #5561e9;">1๏ธโƒฃ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ</span><br>
921
- ์ตœ๋Œ€ 3๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ด๋ฏธ์ง€๋Š” ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.<br><br>
922
-
923
- <span style="font-size: 1.1rem; font-weight: 600; color: #5561e9;">2๏ธโƒฃ ํ”„๋กฌํ”„ํŠธ ์ž…๋ ฅ ๋˜๋Š” ๋ฒ„ํŠผ ์„ ํƒ</span><br>
924
- ๋ณ€ํ™˜ํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ์„ ์ง์ ‘ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜, ๋ฏธ๋ฆฌ ์ •์˜๋œ ๋ฒ„ํŠผ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์„ธ์š”.<br><br>
925
 
926
- <span style="font-size: 1.1rem; font-weight: 600; color: #5561e9;">3๏ธโƒฃ ์ด๋ฏธ์ง€ ์ƒ์„ฑ</span><br>
927
- '์ด๋ฏธ์ง€ ์ƒ์„ฑ (1์žฅ)' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด 1๊ฐœ์˜ ์ด๋ฏธ์ง€๊ฐ€, '์ด๋ฏธ์ง€ ์ƒ์„ฑ (4์žฅ)' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด 4๊ฐ€์ง€ ๋ฒ„์ „์˜ ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
928
- </p>
929
- </div>
930
-
931
- <div class="manual-section">
932
- <div class="manual-section-title"><i class="fas fa-hashtag"></i> ์ด๋ฏธ์ง€ ์ฐธ์กฐ ๋ฐฉ๋ฒ•</div>
933
- <p class="manual-text">
934
- ํ”„๋กฌํ”„ํŠธ์—์„œ ๋‹ค์Œ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์ด๋ฏธ์ง€๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
935
- <ul>
936
- <li><strong style="font-size: 1.05rem;">#1</strong> - ์ฒซ ๋ฒˆ์งธ ์ด๋ฏธ์ง€</li>
937
- <li><strong style="font-size: 1.05rem;">#2</strong> - ๋‘ ๋ฒˆ์งธ ์ด๋ฏธ์ง€</li>
938
- <li><strong style="font-size: 1.05rem;">#3</strong> - ์„ธ ๋ฒˆ์งธ ์ด๋ฏธ์ง€</li>
939
- </ul>
940
 
941
- <div class="tip-box">
942
- <i class="fas fa-lightbulb"></i> <strong>ํŒ:</strong> ์˜ˆ๋ฅผ ๋“ค์–ด, "(#1์˜ ์—ฌ์„ฑ๋ชจ๋ธ)์ด (#2์˜ ์„ ๊ธ€๋ผ์Šค)๋ฅผ ์ฐฉ์šฉํ•œ ๋ชจ์Šต"๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
 
 
 
 
 
 
 
 
 
 
 
943
  </div>
944
- </p>
945
- </div>
946
-
947
- <div class="manual-section">
948
- <div class="manual-section-title"><i class="fas fa-tools"></i> ์ฃผ์š” ๊ธฐ๋Šฅ</div>
949
- <div class="manual-text">
950
- <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1rem;">
951
- <div>
952
- <p style="font-size: 1.1rem; font-weight: 600; color: #ff6b6b;"><i class="fas fa-exchange-alt"></i> ์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ</p>
953
- ํฌ์ฆˆ๋‚˜ ์Šคํƒ€์ผ์„ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ ์›๋ณธ์˜ ์ฃผ์š” ์š”์†Œ๋Š” ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
954
- </div>
955
-
956
- <div>
957
- <p style="font-size: 1.1rem; font-weight: 600; color: #ff6b6b;"><i class="fas fa-eraser"></i> ๊ธ€์ž ์ง€์šฐ๊ธฐ/๋ณ€๊ฒฝ</p>
958
- ์ด๋ฏธ์ง€์˜ ํ…์ŠคํŠธ๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํ…์ŠคํŠธ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
959
- </div>
960
-
961
- <div>
962
- <p style="font-size: 1.1rem; font-weight: 600; color: #ff6b6b;"><i class="fas fa-tshirt"></i> ๊ฐ€์ƒ ์ƒํ’ˆ์ฐฉ์šฉ</p>
963
- ๋ชจ๋ธ์—๊ฒŒ ๋‹ค๋ฅธ ์ด๋ฏธ์ง€์˜ ์ƒํ’ˆ์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ฐฉ์šฉ์‹œํ‚ต๋‹ˆ๋‹ค.
964
- </div>
965
-
966
- <div>
967
- <p style="font-size: 1.1rem; font-weight: 600; color: #ff6b6b;"><i class="fas fa-image"></i> ๋ฐฐ๊ฒฝ ๋ฐ”๊พธ๊ธฐ</p>
968
- ์ฃผ์š” ํ”ผ์‚ฌ์ฒด๋Š” ์œ ์ง€ํ•˜๋ฉฐ ๋ฐฐ๊ฒฝ๋งŒ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค.
969
- </div>
970
-
971
- <div>
972
- <p style="font-size: 1.1rem; font-weight: 600; color: #ff6b6b;"><i class="fas fa-cut"></i> ๋ถ€๋ถ„ ์ง€์šฐ๊ธฐ</p>
973
- ์ด๋ฏธ์ง€์˜ ํŠน์ • ๋ถ€๋ถ„์„ ์ง€์šฐ๊ณ  ๋ฐฐ๊ฒฝ๊ณผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์กฐํ™”๋˜๋„๋ก ์ฑ„์›๋‹ˆ๋‹ค.
974
- </div>
975
-
976
- <div>
977
- <p style="font-size: 1.1rem; font-weight: 600; color: #ff6b6b;"><i class="fas fa-wine-glass"></i> ์ƒํ’ˆ๋“ค๊ณ  ์žˆ๊ธฐ</p>
978
- ๋ชจ๋ธ์ด ์ƒํ’ˆ์„ ๋“ค๊ณ  ์žˆ๋Š” ์ž์—ฐ์Šค๋Ÿฌ์šด ํฌ์ฆˆ์˜ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
979
- </div>
980
-
981
- <div>
982
- <p style="font-size: 1.1rem; font-weight: 600; color: #ff6b6b;"><i class="fas fa-expand-alt"></i> ์ด๋ฏธ์ง€ ํ™•์žฅ</p>
983
- ์›๋ณธ ์ด๋ฏธ์ง€ ์ฃผ๋ณ€์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ถ”๊ฐ€ ์˜์—ญ์„ ์ƒ์„ฑํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.
984
- </div>
985
-
986
- <div>
987
- <p style="font-size: 1.1rem; font-weight: 600; color: #ff6b6b;"><i class="fas fa-sliders-h"></i> ์ด๋ฏธ์ง€ ํ•„ํ„ฐ</p>
988
- ๋ฐ๊ธฐ, ๋Œ€๋น„, ์ฑ„๋„ ๋“ฑ์„ ์กฐ์ ˆํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ์ „๋ฌธ์ ์œผ๋กœ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค.
989
  </div>
990
  </div>
991
- </div>
992
- </div>
993
-
994
- <div class="manual-section">
995
- <div class="manual-section-title"><i class="fas fa-search-plus"></i> ์ด๋ฏธ์ง€ ์—…์Šค์ผ€์ผ๋Ÿฌ</div>
996
- <p class="manual-text">
997
- <span style="font-size: 1.1rem; font-weight: 600; color: #5561e9;">์ด๋ฏธ์ง€ ๊ฐœ์„  ๊ธฐ๋Šฅ</span><br>
998
- ์ €ํ•ด์ƒ๋„ ์ด๋ฏธ์ง€๋ฅผ ๊ณ ํ•ด์ƒ๋„๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ์–ผ๊ตด์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.<br>
999
- ํŠนํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค:
1000
- <ul>
1001
- <li>ํ•ด์ƒ๋„๊ฐ€ ๋‚ฎ์€ ์ด๋ฏธ์ง€ ๊ฐœ์„ </li>
1002
- <li>ํ๋ฆฟํ•˜๊ฑฐ๋‚˜ ๋…ธ์ด์ฆˆ๊ฐ€ ์žˆ๋Š” ์–ผ๊ตด ๋ณต์›</li>
1003
- <li>์ด๋ฏธ์ง€ ์ „๋ฐ˜์ ์ธ ์„ ๋ช…๋„ ํ–ฅ์ƒ</li>
1004
- </ul>
1005
 
1006
- <div class="tip-box">
1007
- <i class="fas fa-lightbulb"></i> <strong>ํŒ:</strong> ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์„์ˆ˜๋ก ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋น ๋ฆ…๋‹ˆ๋‹ค. ์–ผ๊ตด์ด ํฌํ•จ๋œ ์ด๋ฏธ์ง€์—์„œ ๊ฐ€์žฅ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1008
  </div>
1009
- </p>
1010
- </div>
1011
-
1012
- <div class="manual-section">
1013
- <div class="manual-section-title"><i class="fas fa-cut"></i> ๋ฐฐ๊ฒฝ ์ง€์šฐ๊ธฐ ๊ธฐ๋Šฅ</div>
1014
- <p class="manual-text">
1015
- <span style="font-size: 1.1rem; font-weight: 600; color: #5561e9;">์ž๋™ ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ</span><br>
1016
- ์ด๋ฏธ์ง€์—์„œ ๋ฐฐ๊ฒฝ์„ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ์ œ๊ฑฐํ•˜์—ฌ ํˆฌ๋ช…ํ•œ PNG ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.<br>
1017
- ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€:
1018
- <ul>
1019
- <li>์ œํ’ˆ ์ด๋ฏธ์ง€์˜ ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ</li>
1020
- <li>์ธ๋ฌผ ์‚ฌ์ง„์—์„œ ๋ฐฐ๊ฒฝ ๋ถ„๋ฆฌ</li>
1021
- <li>์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€ ํ•ฉ์„ฑ์„ ์œ„ํ•œ ์ค€๋น„</li>
1022
- </ul>
1023
 
1024
- <div class="tip-box">
1025
- <i class="fas fa-lightbulb"></i> <strong>ํŒ:</strong> ๋ฐฐ๊ฒฝ๊ณผ ์ฃผ์š” ํ”ผ์‚ฌ์ฒด ๊ฐ„์˜ ๋Œ€๋น„๊ฐ€ ๋šœ๋ ทํ• ์ˆ˜๋ก ๋” ์ •ํ™•ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ๋ฐฐ๊ฒฝ์˜ ๊ฒฝ์šฐ ๋ฏธ์„ธ ์กฐ์ •์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1026
  </div>
1027
- </p>
1028
- </div>
1029
-
1030
- <div class="manual-section">
1031
- <div class="manual-section-title"><i class="fas fa-sliders-h"></i> ์ด๋ฏธ์ง€ ํ•„ํ„ฐ ๊ธฐ๋Šฅ</div>
1032
- <p class="manual-text">
1033
- <span style="font-size: 1.1rem; font-weight: 600; color: #5561e9;">์ด๋ฏธ์ง€ ํŽธ์ง‘ ๋„๊ตฌ</span><br>
1034
- ์ด๋ฏธ์ง€ ํ•„ํ„ฐ ํƒญ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ์Šฌ๋ผ์ด๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ์‰ฝ๊ฒŒ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.<br>
1035
- ์ฃผ์š” ๊ธฐ๋Šฅ:
1036
- <ul>
1037
- <li>๋ฐ๊ธฐ, ๋Œ€๋น„, ์ฑ„๋„, ์ƒ‰์˜จ๋„ ๋“ฑ ๋‹ค์–‘ํ•œ ์กฐ์ ˆ ์˜ต์…˜</li>
1038
- <li>๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ ์‹ค์‹œ๊ฐ„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ</li>
1039
- <li>ํŽธ์ง‘ ์™„๋ฃŒ ํ›„ JPG ํ˜•์‹์œผ๋กœ ์ €์žฅ ๊ฐ€๋Šฅ</li>
1040
- </ul>
1041
 
1042
- <div class="tip-box">
1043
- <i class="fas fa-lightbulb"></i> <strong>ํŒ:</strong> ๊ฐ ์Šฌ๋ผ์ด๋”๋ฅผ ์กฐ๊ธˆ์”ฉ ์กฐ์ ˆํ•˜๋ฉฐ ์›ํ•˜๋Š” ํšจ๊ณผ๋ฅผ ์ฐพ์•„๋ณด์„ธ์š”.
 
 
 
 
 
 
 
 
 
 
1044
  </div>
1045
- </p>
1046
- </div>
1047
 
1048
- <div class="manual-section">
1049
- <div class="manual-section-title"><i class="fas fa-question-circle"></i> ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ</div>
1050
- <p class="manual-text">
1051
- <strong style="font-size: 1.1rem; color: #5561e9;">Q: ์–ด๋–ค ํ˜•์‹์˜ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‚˜์š”?</strong><br>
1052
- A: JPG, PNG, WEBP ๋“ฑ ๋Œ€๋ถ€๋ถ„์˜ ์ผ๋ฐ˜์ ์ธ ์ด๋ฏธ์ง€ ํ˜•์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.<br><br>
1053
-
1054
- <strong style="font-size: 1.1rem; color: #5561e9;">Q: ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋ฐ ์ฒ˜๋ฆฌ์— ์–ผ๋งˆ๋‚˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋‚˜์š”?</strong><br>
1055
- A: ์ผ๋ฐ˜์ ์œผ๋กœ 10-30์ดˆ ์ •๋„ ์†Œ์š”๋˜๋ฉฐ, ์ด๋ฏธ์ง€ ํฌ๊ธฐ์™€ ๋ณต์žก๋„์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.<br><br>
1056
-
1057
- <strong style="font-size: 1.1rem; color: #5561e9;">Q: ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‚˜์š”?</strong><br>
1058
- A: ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€์— ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ '์ด๋ฏธ์ง€ ์ €๏ฟฝ๏ฟฝ๏ฟฝ' ์˜ต์…˜์„ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
1059
- </p>
1060
- </div>
1061
- </div>
1062
- """)
1063
-
1064
  with gr.TabItem("โœจ ์ด์ปค๋จธ์Šค ์ด๋ฏธ์ง€ ์ƒ์„ฑ๊ธฐ", elem_classes="tab-content"):
1065
  with gr.Row(equal_height=True):
1066
  with gr.Column(scale=1):
@@ -1129,7 +1135,7 @@ with gr.TabItem("๐Ÿ“š ์‚ฌ์šฉ ์„ค๋ช…์„œ", elem_classes="tab-content"):
1129
  examples=examples,
1130
  inputs=[image1_input, image2_input, image3_input, prompt_input]
1131
  )
1132
-
1133
  with gr.TabItem("๐Ÿ” ์ด๋ฏธ์ง€ ์—…์Šค์ผ€์ผ๋Ÿฌ", elem_classes="tab-content"):
1134
  with gr.Row():
1135
  with gr.Column(elem_classes="panel"):
@@ -1180,9 +1186,8 @@ with gr.TabItem("๐Ÿ“š ์‚ฌ์šฉ ์„ค๋ช…์„œ", elem_classes="tab-content"):
1180
  with gr.Row():
1181
  bg_remove_status = gr.Textbox(label="์ƒํƒœ", lines=2, elem_classes="custom-input")
1182
  bg_remove_btn = gr.Button('โœ‚๏ธ ๋ฐฐ๊ฒฝ ์ œ๊ฑฐํ•˜๊ธฐ', elem_classes="custom-button primary")
1183
-
1184
-
1185
- # UI ๊ตฌ์„ฑ์— ์ด๋ฏธ์ง€ ํ•„ํ„ฐ ํƒญ ์ถ”๊ฐ€ (๊ธฐ์กด ํƒญ ๋‹ค์Œ์— ์ถ”๊ฐ€)
1186
  with gr.TabItem("๐Ÿ–Œ๏ธ ์ด๋ฏธ์ง€ ํ•„ํ„ฐ", elem_classes="tab-content"):
1187
  with gr.Row(equal_height=True):
1188
  # ์™ผ์ชฝ ์—ด: ๋น„์œจ 3
@@ -1190,7 +1195,7 @@ with gr.TabItem("๐Ÿ“š ์‚ฌ์šฉ ์„ค๋ช…์„œ", elem_classes="tab-content"):
1190
  gr.HTML('<div class="section-title"><i class="fas fa-sliders-h"></i> ์ด๋ฏธ์ง€ ํ•„ํ„ฐ ์„ค์ •</div>')
1191
  # ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ
1192
  filter_input_image = gr.Image(type="pil", label="์ด๋ฏธ์ง€ ์—…๋กœ๋“œ", elem_classes="image-container")
1193
-
1194
  # ์กฐ์ • ์Šฌ๋ผ์ด๋”
1195
  with gr.Group():
1196
  brightness_slider = gr.Slider(0.0, 2.0, value=1.0, step=0.1, label="๋ฐ๊ธฐ ์กฐ์ ˆ")
@@ -1202,19 +1207,19 @@ with gr.TabItem("๐Ÿ“š ์‚ฌ์šฉ ์„ค๋ช…์„œ", elem_classes="tab-content"):
1202
  vibrance_slider = gr.Slider(-100.0, 100.0, value=0.0, step=1.0, label="ํ™œ๊ธฐ ์กฐ์ ˆ")
1203
  color_mixer_blues_slider = gr.Slider(-100.0, 100.0, value=0.0, step=1.0, label="์ปฌ๋Ÿฌ ๋ฏน์„œ (๋ธ”๋ฃจ)")
1204
  shadows_slider = gr.Slider(-100.0, 100.0, value=0.0, step=1.0, label="๊ทธ๋ฆผ์ž ์กฐ์ ˆ")
1205
-
1206
  # ์˜ค๋ฅธ์ชฝ ์—ด: ๋น„์œจ 7
1207
  with gr.Column(scale=7, elem_classes="panel"):
1208
  gr.HTML('<div class="section-title"><i class="fas fa-image"></i> ํ•„ํ„ฐ ์ ์šฉ ๊ฒฐ๊ณผ</div>')
1209
  # ์ฒ˜๋ฆฌ๋œ ์ด๋ฏธ์ง€ ์ถœ๋ ฅ
1210
  filter_output_image = gr.Image(type="pil", label="์ฒ˜๋ฆฌ๋œ ์ด๋ฏธ์ง€", elem_classes="image-container")
1211
-
1212
  # ๋ณ€ํ™˜๋œ ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ
1213
  with gr.Row():
1214
  gr.HTML('<div class="section-title"><i class="fas fa-download"></i> ์ด๋ฏธ์ง€ ์ €์žฅ</div>')
1215
  download_button = gr.Button("JPG๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ", elem_classes="custom-button primary")
1216
  download_output = gr.File(label="JPG ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ")
1217
-
1218
  # ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ํ•จ์ˆ˜ ์—ฐ๊ฒฐ
1219
  inputs = [
1220
  filter_input_image,
@@ -1228,7 +1233,7 @@ with gr.TabItem("๐Ÿ“š ์‚ฌ์šฉ ์„ค๋ช…์„œ", elem_classes="tab-content"):
1228
  color_mixer_blues_slider,
1229
  shadows_slider
1230
  ]
1231
-
1232
  input_components = [
1233
  brightness_slider,
1234
  contrast_slider,
@@ -1240,20 +1245,20 @@ with gr.TabItem("๐Ÿ“š ์‚ฌ์šฉ ์„ค๋ช…์„œ", elem_classes="tab-content"):
1240
  color_mixer_blues_slider,
1241
  shadows_slider
1242
  ]
1243
-
1244
  for input_component in input_components:
1245
  input_component.change(
1246
  fn=process_image,
1247
  inputs=inputs,
1248
  outputs=filter_output_image
1249
  )
1250
-
1251
  filter_input_image.change(
1252
  fn=lambda x, *args: process_image(x, *args) if x is not None else None,
1253
  inputs=inputs,
1254
  outputs=filter_output_image
1255
  )
1256
-
1257
  # ๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ ๊ธฐ๋Šฅ
1258
  download_button.click(
1259
  fn=download_image,
 
908
  </div>
909
  """
910
 
911
+ # UI ๊ตฌ์„ฑ
912
+ with gr.Blocks(css=custom_css) as demo:
913
+ gr.HTML(fontawesome_link)
914
+ gr.HTML(header_html)
915
+
916
+ with gr.Tabs(elem_classes="custom-tabs") as tabs:
917
+ # ์‚ฌ์šฉ ์„ค๋ช…์„œ ํƒญ์„ ์ฒซ ๋ฒˆ์งธ๋กœ ๋ฐฐ์น˜
918
+ with gr.TabItem("๐Ÿ“š ์‚ฌ์šฉ ์„ค๋ช…์„œ", elem_classes="tab-content"):
919
+ gr.HTML("""
920
+ <div class="user-manual">
921
+ <div class="manual-title"><i class="fas fa-book"></i> ์‚ฌ์šฉ ์„ค๋ช…์„œ</div>
 
 
 
922
 
923
+ <div class="manual-section">
924
+ <div class="manual-section-title"><i class="fas fa-magic"></i> ์ด์ปค๋จธ์Šค์ „์šฉ ์ด๋ฏธ์ง€ ์ƒ์„ฑ๊ธฐ</div>
925
+ <p class="manual-text">
926
+ <span style="font-size: 1.1rem; font-weight: 600; color: #5561e9;">1๏ธโƒฃ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ</span><br>
927
+ ์ตœ๋Œ€ 3๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ด๋ฏธ์ง€๋Š” ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.<br><br>
928
+
929
+ <span style="font-size: 1.1rem; font-weight: 600; color: #5561e9;">2๏ธโƒฃ ํ”„๋กฌํ”„ํŠธ ์ž…๋ ฅ ๋˜๋Š” ๋ฒ„ํŠผ ์„ ํƒ</span><br>
930
+ ๋ณ€ํ™˜ํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ์„ ์ง์ ‘ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜, ๋ฏธ๋ฆฌ ์ •์˜๋œ ๋ฒ„ํŠผ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์„ธ์š”.<br><br>
931
+
932
+ <span style="font-size: 1.1rem; font-weight: 600; color: #5561e9;">3๏ธโƒฃ ์ด๋ฏธ์ง€ ์ƒ์„ฑ</span><br>
933
+ '์ด๋ฏธ์ง€ ์ƒ์„ฑ (1์žฅ)' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด 1๊ฐœ์˜ ์ด๋ฏธ์ง€๊ฐ€, '์ด๋ฏธ์ง€ ์ƒ์„ฑ (4์žฅ)' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด 4๊ฐ€์ง€ ๋ฒ„์ „์˜ ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
934
+ </p>
935
+ </div>
 
936
 
937
+ <div class="manual-section">
938
+ <div class="manual-section-title"><i class="fas fa-hashtag"></i> ์ด๋ฏธ์ง€ ์ฐธ์กฐ ๋ฐฉ๋ฒ•</div>
939
+ <p class="manual-text">
940
+ ํ”„๋กฌํ”„ํŠธ์—์„œ ๋‹ค์Œ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์ด๋ฏธ์ง€๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
941
+ <ul>
942
+ <li><strong style="font-size: 1.05rem;">#1</strong> - ์ฒซ ๋ฒˆ์งธ ์ด๋ฏธ์ง€</li>
943
+ <li><strong style="font-size: 1.05rem;">#2</strong> - ๋‘ ๋ฒˆ์งธ ์ด๋ฏธ์ง€</li>
944
+ <li><strong style="font-size: 1.05rem;">#3</strong> - ์„ธ ๋ฒˆ์งธ ์ด๋ฏธ์ง€</li>
945
+ </ul>
946
+
947
+ <div class="tip-box">
948
+ <i class="fas fa-lightbulb"></i> <strong>ํŒ:</strong> ์˜ˆ๋ฅผ ๋“ค์–ด, "(#1์˜ ์—ฌ์„ฑ๋ชจ๋ธ)์ด (#2์˜ ์„ ๊ธ€๋ผ์Šค)๋ฅผ ์ฐฉ์šฉํ•œ ๋ชจ์Šต"๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
949
+ </div>
950
+ </p>
951
  </div>
952
+
953
+ <div class="manual-section">
954
+ <div class="manual-section-title"><i class="fas fa-tools"></i> ์ฃผ์š” ๊ธฐ๋Šฅ</div>
955
+ <div class="manual-text">
956
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1rem;">
957
+ <div>
958
+ <p style="font-size: 1.1rem; font-weight: 600; color: #ff6b6b;"><i class="fas fa-exchange-alt"></i> ์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ</p>
959
+ ํฌ์ฆˆ๋‚˜ ์Šคํƒ€์ผ์„ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ ์›๋ณธ์˜ ์ฃผ์š” ์š”์†Œ๋Š” ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
960
+ </div>
961
+
962
+ <div>
963
+ <p style="font-size: 1.1rem; font-weight: 600; color: #ff6b6b;"><i class="fas fa-eraser"></i> ๊ธ€์ž ์ง€์šฐ๊ธฐ/๋ณ€๊ฒฝ</p>
964
+ ์ด๋ฏธ์ง€์˜ ํ…์ŠคํŠธ๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํ…์ŠคํŠธ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
965
+ </div>
966
+
967
+ <div>
968
+ <p style="font-size: 1.1rem; font-weight: 600; color: #ff6b6b;"><i class="fas fa-tshirt"></i> ๊ฐ€์ƒ ์ƒํ’ˆ์ฐฉ์šฉ</p>
969
+ ๋ชจ๋ธ์—๊ฒŒ ๋‹ค๋ฅธ ์ด๋ฏธ์ง€์˜ ์ƒํ’ˆ์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ฐฉ์šฉ์‹œํ‚ต๋‹ˆ๋‹ค.
970
+ </div>
971
+
972
+ <div>
973
+ <p style="font-size: 1.1rem; font-weight: 600; color: #ff6b6b;"><i class="fas fa-image"></i> ๋ฐฐ๊ฒฝ ๋ฐ”๊พธ๊ธฐ</p>
974
+ ์ฃผ์š” ํ”ผ์‚ฌ์ฒด๋Š” ์œ ์ง€ํ•˜๋ฉฐ ๋ฐฐ๊ฒฝ๋งŒ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค.
975
+ </div>
976
+
977
+ <div>
978
+ <p style="font-size: 1.1rem; font-weight: 600; color: #ff6b6b;"><i class="fas fa-cut"></i> ๋ถ€๋ถ„ ์ง€์šฐ๊ธฐ</p>
979
+ ์ด๋ฏธ์ง€์˜ ํŠน์ • ๋ถ€๋ถ„์„ ์ง€์šฐ๊ณ  ๋ฐฐ๊ฒฝ๊ณผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์กฐํ™”๋˜๋„๋ก ์ฑ„์›๋‹ˆ๋‹ค.
980
+ </div>
981
+
982
+ <div>
983
+ <p style="font-size: 1.1rem; font-weight: 600; color: #ff6b6b;"><i class="fas fa-wine-glass"></i> ์ƒํ’ˆ๋“ค๊ณ  ์žˆ๊ธฐ</p>
984
+ ๋ชจ๋ธ์ด ์ƒํ’ˆ์„ ๋“ค๊ณ  ์žˆ๋Š” ์ž์—ฐ์Šค๋Ÿฌ์šด ํฌ์ฆˆ์˜ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
985
+ </div>
986
+
987
+ <div>
988
+ <p style="font-size: 1.1rem; font-weight: 600; color: #ff6b6b;"><i class="fas fa-expand-alt"></i> ์ด๋ฏธ์ง€ ํ™•์žฅ</p>
989
+ ์›๋ณธ ์ด๋ฏธ์ง€ ์ฃผ๋ณ€์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ถ”๊ฐ€ ์˜์—ญ์„ ์ƒ์„ฑํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.
990
+ </div>
991
+
992
+ <div>
993
+ <p style="font-size: 1.1rem; font-weight: 600; color: #ff6b6b;"><i class="fas fa-sliders-h"></i> ์ด๋ฏธ์ง€ ํ•„ํ„ฐ</p>
994
+ ๋ฐ๊ธฐ, ๋Œ€๋น„, ์ฑ„๋„ ๋“ฑ์„ ์กฐ์ ˆํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ์ „๋ฌธ์ ์œผ๋กœ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค.
995
+ </div>
996
+ </div>
997
  </div>
998
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
999
 
1000
+ <div class="manual-section">
1001
+ <div class="manual-section-title"><i class="fas fa-search-plus"></i> ์ด๋ฏธ์ง€ ์—…์Šค์ผ€์ผ๋Ÿฌ</div>
1002
+ <p class="manual-text">
1003
+ <span style="font-size: 1.1rem; font-weight: 600; color: #5561e9;">์ด๋ฏธ์ง€ ๊ฐœ์„  ๊ธฐ๋Šฅ</span><br>
1004
+ ์ €ํ•ด์ƒ๋„ ์ด๋ฏธ์ง€๋ฅผ ๊ณ ํ•ด์ƒ๋„๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ์–ผ๊ตด์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.<br>
1005
+ ํŠนํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค:
1006
+ <ul>
1007
+ <li>ํ•ด์ƒ๋„๊ฐ€ ๋‚ฎ์€ ์ด๋ฏธ์ง€ ๊ฐœ์„ </li>
1008
+ <li>ํ๋ฆฟํ•˜๊ฑฐ๋‚˜ ๋…ธ์ด์ฆˆ๊ฐ€ ์žˆ๋Š” ์–ผ๊ตด ๋ณต์›</li>
1009
+ <li>์ด๋ฏธ์ง€ ์ „๋ฐ˜์ ์ธ ์„ ๋ช…๋„ ํ–ฅ์ƒ</li>
1010
+ </ul>
1011
+
1012
+ <div class="tip-box">
1013
+ <i class="fas fa-lightbulb"></i> <strong>ํŒ:</strong> ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์„์ˆ˜๋ก ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋น ๋ฆ…๋‹ˆ๋‹ค. ์–ผ๊ตด์ด ํฌํ•จ๋œ ์ด๋ฏธ์ง€์—์„œ ๊ฐ€์žฅ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
1014
+ </div>
1015
+ </p>
1016
+ </div>
1017
+
1018
+ <div class="manual-section">
1019
+ <div class="manual-section-title"><i class="fas fa-cut"></i> ๋ฐฐ๊ฒฝ ์ง€์šฐ๊ธฐ ๊ธฐ๋Šฅ</div>
1020
+ <p class="manual-text">
1021
+ <span style="font-size: 1.1rem; font-weight: 600; color: #5561e9;">์ž๋™ ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ</span><br>
1022
+ ์ด๋ฏธ์ง€์—์„œ ๋ฐฐ๊ฒฝ์„ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ์ œ๊ฑฐํ•˜์—ฌ ํˆฌ๋ช…ํ•œ PNG ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.<br>
1023
+ ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€:
1024
+ <ul>
1025
+ <li>์ œํ’ˆ ์ด๋ฏธ์ง€์˜ ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ</li>
1026
+ <li>์ธ๋ฌผ ์‚ฌ์ง„์—์„œ ๋ฐฐ๊ฒฝ ๋ถ„๋ฆฌ</li>
1027
+ <li>์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€ ํ•ฉ์„ฑ์„ ์œ„ํ•œ ์ค€๋น„</li>
1028
+ </ul>
1029
+
1030
+ <div class="tip-box">
1031
+ <i class="fas fa-lightbulb"></i> <strong>ํŒ:</strong> ๋ฐฐ๊ฒฝ๊ณผ ์ฃผ์š” ํ”ผ์‚ฌ์ฒด ๊ฐ„์˜ ๋Œ€๋น„๊ฐ€ ๋šœ๋ ทํ• ์ˆ˜๋ก ๋” ์ •ํ™•ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ๋ฐฐ๊ฒฝ์˜ ๊ฒฝ์šฐ ๋ฏธ์„ธ ์กฐ์ •์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
1032
+ </div>
1033
+ </p>
1034
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1035
 
1036
+ <div class="manual-section">
1037
+ <div class="manual-section-title"><i class="fas fa-sliders-h"></i> ์ด๋ฏธ์ง€ ํ•„ํ„ฐ ๊ธฐ๋Šฅ</div>
1038
+ <p class="manual-text">
1039
+ <span style="font-size: 1.1rem; font-weight: 600; color: #5561e9;">์ด๋ฏธ์ง€ ํŽธ์ง‘ ๋„๊ตฌ</span><br>
1040
+ ์ด๋ฏธ์ง€ ํ•„ํ„ฐ ํƒญ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ์Šฌ๋ผ์ด๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ์‰ฝ๊ฒŒ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.<br>
1041
+ ์ฃผ์š” ๊ธฐ๋Šฅ:
1042
+ <ul>
1043
+ <li>๋ฐ๊ธฐ, ๋Œ€๋น„, ์ฑ„๋„, ์ƒ‰์˜จ๋„ ๋“ฑ ๋‹ค์–‘ํ•œ ์กฐ์ ˆ ์˜ต์…˜</li>
1044
+ <li>๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ ์‹ค์‹œ๊ฐ„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ</li>
1045
+ <li>ํŽธ์ง‘ ์™„๋ฃŒ ํ›„ JPG ํ˜•์‹์œผ๋กœ ์ €์žฅ ๊ฐ€๋Šฅ</li>
1046
+ </ul>
1047
+
1048
+ <div class="tip-box">
1049
+ <i class="fas fa-lightbulb"></i> <strong>ํŒ:</strong> ๊ฐ ์Šฌ๋ผ์ด๋”๋ฅผ ์กฐ๊ธˆ์”ฉ ์กฐ์ ˆํ•˜๋ฉฐ ์›ํ•˜๋Š” ํšจ๊ณผ๋ฅผ ์ฐพ์•„๋ณด์„ธ์š”.
1050
+ </div>
1051
+ </p>
1052
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1053
 
1054
+ <div class="manual-section">
1055
+ <div class="manual-section-title"><i class="fas fa-question-circle"></i> ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ</div>
1056
+ <p class="manual-text">
1057
+ <strong style="font-size: 1.1rem; color: #5561e9;">Q: ์–ด๋–ค ํ˜•์‹์˜ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‚˜์š”?</strong><br>
1058
+ A: JPG, PNG, WEBP ๋“ฑ ๋Œ€๋ถ€๋ถ„์˜ ์ผ๋ฐ˜์ ์ธ ์ด๋ฏธ์ง€ ํ˜•์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.<br><br>
1059
+
1060
+ <strong style="font-size: 1.1rem; color: #5561e9;">Q: ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋ฐ ์ฒ˜๋ฆฌ์— ์–ผ๋งˆ๋‚˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋‚˜์š”?</strong><br>
1061
+ A: ์ผ๋ฐ˜์ ์œผ๋กœ 10-30์ดˆ ์ •๋„ ์†Œ์š”๋˜๋ฉฐ, ์ด๋ฏธ์ง€ ํฌ๊ธฐ์™€ ๋ณต์žก๋„์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.<br><br>
1062
+
1063
+ <strong style="font-size: 1.1rem; color: #5561e9;">Q: ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‚˜์š”?</strong><br>
1064
+ A: ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€์— ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ '์ด๋ฏธ์ง€ ์ €์žฅ' ์˜ต์…˜์„ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
1065
+ </p>
1066
  </div>
1067
+ </div>
1068
+ """)
1069
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1070
  with gr.TabItem("โœจ ์ด์ปค๋จธ์Šค ์ด๋ฏธ์ง€ ์ƒ์„ฑ๊ธฐ", elem_classes="tab-content"):
1071
  with gr.Row(equal_height=True):
1072
  with gr.Column(scale=1):
 
1135
  examples=examples,
1136
  inputs=[image1_input, image2_input, image3_input, prompt_input]
1137
  )
1138
+
1139
  with gr.TabItem("๐Ÿ” ์ด๋ฏธ์ง€ ์—…์Šค์ผ€์ผ๋Ÿฌ", elem_classes="tab-content"):
1140
  with gr.Row():
1141
  with gr.Column(elem_classes="panel"):
 
1186
  with gr.Row():
1187
  bg_remove_status = gr.Textbox(label="์ƒํƒœ", lines=2, elem_classes="custom-input")
1188
  bg_remove_btn = gr.Button('โœ‚๏ธ ๋ฐฐ๊ฒฝ ์ œ๊ฑฐํ•˜๊ธฐ', elem_classes="custom-button primary")
1189
+
1190
+ # ์ด๋ฏธ์ง€ ํ•„ํ„ฐ ํƒญ
 
1191
  with gr.TabItem("๐Ÿ–Œ๏ธ ์ด๋ฏธ์ง€ ํ•„ํ„ฐ", elem_classes="tab-content"):
1192
  with gr.Row(equal_height=True):
1193
  # ์™ผ์ชฝ ์—ด: ๋น„์œจ 3
 
1195
  gr.HTML('<div class="section-title"><i class="fas fa-sliders-h"></i> ์ด๋ฏธ์ง€ ํ•„ํ„ฐ ์„ค์ •</div>')
1196
  # ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ
1197
  filter_input_image = gr.Image(type="pil", label="์ด๋ฏธ์ง€ ์—…๋กœ๋“œ", elem_classes="image-container")
1198
+
1199
  # ์กฐ์ • ์Šฌ๋ผ์ด๋”
1200
  with gr.Group():
1201
  brightness_slider = gr.Slider(0.0, 2.0, value=1.0, step=0.1, label="๋ฐ๊ธฐ ์กฐ์ ˆ")
 
1207
  vibrance_slider = gr.Slider(-100.0, 100.0, value=0.0, step=1.0, label="ํ™œ๊ธฐ ์กฐ์ ˆ")
1208
  color_mixer_blues_slider = gr.Slider(-100.0, 100.0, value=0.0, step=1.0, label="์ปฌ๋Ÿฌ ๋ฏน์„œ (๋ธ”๋ฃจ)")
1209
  shadows_slider = gr.Slider(-100.0, 100.0, value=0.0, step=1.0, label="๊ทธ๋ฆผ์ž ์กฐ์ ˆ")
1210
+
1211
  # ์˜ค๋ฅธ์ชฝ ์—ด: ๋น„์œจ 7
1212
  with gr.Column(scale=7, elem_classes="panel"):
1213
  gr.HTML('<div class="section-title"><i class="fas fa-image"></i> ํ•„ํ„ฐ ์ ์šฉ ๊ฒฐ๊ณผ</div>')
1214
  # ์ฒ˜๋ฆฌ๋œ ์ด๋ฏธ์ง€ ์ถœ๋ ฅ
1215
  filter_output_image = gr.Image(type="pil", label="์ฒ˜๋ฆฌ๋œ ์ด๋ฏธ์ง€", elem_classes="image-container")
1216
+
1217
  # ๋ณ€ํ™˜๋œ ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ
1218
  with gr.Row():
1219
  gr.HTML('<div class="section-title"><i class="fas fa-download"></i> ์ด๋ฏธ์ง€ ์ €์žฅ</div>')
1220
  download_button = gr.Button("JPG๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ", elem_classes="custom-button primary")
1221
  download_output = gr.File(label="JPG ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ")
1222
+
1223
  # ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ํ•จ์ˆ˜ ์—ฐ๊ฒฐ
1224
  inputs = [
1225
  filter_input_image,
 
1233
  color_mixer_blues_slider,
1234
  shadows_slider
1235
  ]
1236
+
1237
  input_components = [
1238
  brightness_slider,
1239
  contrast_slider,
 
1245
  color_mixer_blues_slider,
1246
  shadows_slider
1247
  ]
1248
+
1249
  for input_component in input_components:
1250
  input_component.change(
1251
  fn=process_image,
1252
  inputs=inputs,
1253
  outputs=filter_output_image
1254
  )
1255
+
1256
  filter_input_image.change(
1257
  fn=lambda x, *args: process_image(x, *args) if x is not None else None,
1258
  inputs=inputs,
1259
  outputs=filter_output_image
1260
  )
1261
+
1262
  # ๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ ๊ธฐ๋Šฅ
1263
  download_button.click(
1264
  fn=download_image,