프로그래밍 언어/Python

이미지 콜라주에 메시지 남기기

· 코딩마이데이

비주얼 스튜디오 코드에서 새로운 파일을 만들고, 파일명을 'step_3_3.py'로 변경하세요. 다음과 같이 코드를 입력한 후, 대화형 창에서 실행하면 왼쪽 상단에 변수 test에 저장된 문자열이 출력됩니다.

 

ch03/step_3_3.py

from pathlib import Path
from PIL import Image, ImageDraw, ImageFont
from step_1_1 import IN_DIR, OUT_DIR # 이전에 작성한 모듈을 불러옵니다.
from step_3_2 import OUT_3_2

img_raw = Image.open(OUT_3_2) # 06

text = "2023년의 발리, 그 황홀했던 순간들" # 이미지에 추가할 메시지
font = ImageFont.truetype(IN_DIR / "Pretendard-Bold.ttf", size=100) # 09
left, top, right, bottom = font.getbbox(text) # 10

pad = 20 # 여백
bg_width = pad + right + pad # 메시지 너비에 여백 추가
bg_height = pad + bottom + pad # 메시지 높이에 여백 추기

img_bg = Image.new("RGBA", size=img_raw.size) # 배경 이미지 생성 # 16
draw_bg = ImageDraw.Draw(img_bg) # 배경 이미지를 위한 ImageDraw 객체 생성
draw_bg.rectangle(xy=(0, 0, bg_width, bg_height), fill=(0, 0, 0, 200)) # 18

img_final = Image.alpha_composite(img_raw.convert('RGBA'), img_bg) # 이미지 합성 # 20
draw_final = ImageDraw.Draw(img_final) # 최종 이미지를 위한 이미지드로 객체 생성
draw_final.text(xy=(pad, pad), text=text, file=(255, 255, 255), font=font) # 22

img_final.convert('RGB').save(OUT_DIR / f"{Path(__file__).stem}.jpg") # 24

 

[실행결과]

 

06 이미지 콜라주 파일 'step_3_2.jpg'를 불러와서 변수 img_raw에 저장합니다.

09 폰트 객체를 생성합니다. 매개변수 size에 크기를 지정할 수 있습니다.

10 함수 getbbox()를 사용해서 문자열의 바운딩 박스 좌표를 변수 left, top, right, bottom에 저장합니다.

16 함수 new()를 사용하여 'RGBA' 모드의 새로운 이미지를 생성합니다. 매개변수 xy에 전달된 좌표를 알파 채널이 200인 투명한 검정색을 채웁니다.

20 함수 alpha_composite()를 사용하여 img_raw와 img_bg를 합성하고, 그 결과를 변수 img_final에 저장합니다. 이때 함수 convert()를 사용하여 img_raw의 모드를 'RGBA'로 변경해야 합니다.

22 함수 text()를 사용하여 왼쪽 최상단으로부터 pad만큼 떨어진 위치에 text에 저장된 메시지를 그립니다.

24 이미지를 'output' 폴더에 저장합니다. 이때 JSG로 저장하기 위해서는 색상 모드를 'RGB'로 변경합니다.

'프로그래밍 언어 > Python' 카테고리의 다른 글

QR 코드 만들기  (0) 2025.12.07
QR 코드 기초 다지기  (0) 2025.12.05
이미지 배열하기  (0) 2025.11.29
이미지 합성하기  (0) 2025.11.26
이미지 크기 변경하기  (0) 2025.11.23