aiqtech commited on
Commit
c72485e
·
verified ·
1 Parent(s): af19b6f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -19
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
- # 원본 이미지를 RGBA 모드로 변환
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
- # 1. 원본 이미지에서 투명한 부분 추출
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
- # 3. 이미지 합성
661
- if alpha_mask:
662
- # 원본 이미지의 투명하지 않은 부분만 유지
663
- output_image = Image.alpha_composite(text_layer, image)
664
- else:
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