Spaces:
Paused
Paused
Update app.py
Browse files
app.py
CHANGED
@@ -596,13 +596,9 @@ def add_text_to_image(
|
|
596 |
print(f"Unexpected image type: {type(input_image)}")
|
597 |
return input_image
|
598 |
|
599 |
-
#
|
600 |
image = image.convert('RGBA')
|
601 |
|
602 |
-
# 텍스트 오버레이 생성
|
603 |
-
txt_overlay = Image.new('RGBA', image.size, (255, 255, 255, 0))
|
604 |
-
draw = ImageDraw.Draw(txt_overlay)
|
605 |
-
|
606 |
# 폰트 설정
|
607 |
try:
|
608 |
font_path = {
|
@@ -639,15 +635,11 @@ def add_text_to_image(
|
|
639 |
text_color = (*rgb_color, int(opacity))
|
640 |
|
641 |
if text_position_type == "Text Behind Image":
|
642 |
-
#
|
643 |
-
alpha_mask = image.split()[3] if len(image.split()) == 4 else None
|
644 |
-
|
645 |
-
# 2. 텍스트를 먼저 그리기
|
646 |
-
background = Image.new('RGBA', image.size, (255, 255, 255, 0))
|
647 |
text_layer = Image.new('RGBA', image.size, (255, 255, 255, 0))
|
648 |
text_draw = ImageDraw.Draw(text_layer)
|
649 |
|
650 |
-
# 텍스트 그리기
|
651 |
for dx in range(-thickness, thickness + 1):
|
652 |
for dy in range(-thickness, thickness + 1):
|
653 |
text_draw.text(
|
@@ -657,15 +649,17 @@ def add_text_to_image(
|
|
657 |
fill=text_color
|
658 |
)
|
659 |
|
660 |
-
#
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
# 알파 채널이 없는 경우
|
666 |
-
output_image = Image.alpha_composite(text_layer, image)
|
667 |
else:
|
668 |
-
# Text Over Image
|
|
|
|
|
|
|
|
|
669 |
for dx in range(-thickness, thickness + 1):
|
670 |
for dy in range(-thickness, thickness + 1):
|
671 |
draw.text(
|
@@ -674,6 +668,7 @@ def add_text_to_image(
|
|
674 |
font=font,
|
675 |
fill=text_color
|
676 |
)
|
|
|
677 |
output_image = Image.alpha_composite(image, txt_overlay)
|
678 |
|
679 |
# RGB로 변환하여 반환
|
@@ -681,6 +676,7 @@ def add_text_to_image(
|
|
681 |
|
682 |
except Exception as e:
|
683 |
print(f"Text addition error: {str(e)}")
|
|
|
684 |
return input_image
|
685 |
|
686 |
|
|
|
596 |
print(f"Unexpected image type: {type(input_image)}")
|
597 |
return input_image
|
598 |
|
599 |
+
# 이미지를 RGBA 모드로 변환
|
600 |
image = image.convert('RGBA')
|
601 |
|
|
|
|
|
|
|
|
|
602 |
# 폰트 설정
|
603 |
try:
|
604 |
font_path = {
|
|
|
635 |
text_color = (*rgb_color, int(opacity))
|
636 |
|
637 |
if text_position_type == "Text Behind Image":
|
638 |
+
# 텍스트 레이어 생성
|
|
|
|
|
|
|
|
|
639 |
text_layer = Image.new('RGBA', image.size, (255, 255, 255, 0))
|
640 |
text_draw = ImageDraw.Draw(text_layer)
|
641 |
|
642 |
+
# 텍스트 그리기
|
643 |
for dx in range(-thickness, thickness + 1):
|
644 |
for dy in range(-thickness, thickness + 1):
|
645 |
text_draw.text(
|
|
|
649 |
fill=text_color
|
650 |
)
|
651 |
|
652 |
+
# 최종 이미지 합성
|
653 |
+
output_image = Image.new('RGBA', image.size, (255, 255, 255, 255)) # 흰색 배경
|
654 |
+
output_image = Image.alpha_composite(output_image, text_layer) # 텍스트 추가
|
655 |
+
output_image = Image.alpha_composite(output_image, image) # 원본 이미지 추가
|
656 |
+
|
|
|
|
|
657 |
else:
|
658 |
+
# Text Over Image
|
659 |
+
txt_overlay = Image.new('RGBA', image.size, (255, 255, 255, 0))
|
660 |
+
draw = ImageDraw.Draw(txt_overlay)
|
661 |
+
|
662 |
+
# 텍스트 그리기
|
663 |
for dx in range(-thickness, thickness + 1):
|
664 |
for dy in range(-thickness, thickness + 1):
|
665 |
draw.text(
|
|
|
668 |
font=font,
|
669 |
fill=text_color
|
670 |
)
|
671 |
+
|
672 |
output_image = Image.alpha_composite(image, txt_overlay)
|
673 |
|
674 |
# RGB로 변환하여 반환
|
|
|
676 |
|
677 |
except Exception as e:
|
678 |
print(f"Text addition error: {str(e)}")
|
679 |
+
traceback.print_exc() # 상세한 에러 정보 출력
|
680 |
return input_image
|
681 |
|
682 |
|