[Python] 텍스트가 있는 이미지 만들기
- 자아실현/파이썬
- 2020. 6. 8.
개요
아래와 같이 단순히 텍스트가 들어간 이미지를 만드려고 합니다.
이유는 mp3 파일을 동영상으로 만들 때 배경 이미지로 쓰기 위함
코드
한글 폰트를 다운 받아서 해당 파이썬 파일과 같은 폴더에 두고 사용하였습니다.
(네이버 나눔글꼴 이용 https://hangeul.naver.com/2017/nanum)
한글 사용 안 할거면 따로 폰트 다운 없이 코드 주석 부분의 Arial 폰트 사용
전체 코드 및 설명
# 먼저 이미지 처리에 필요한 모듈을 임포트합니다.
# textwrap은 이미지에 들어갈 글자가 길 경우, 여러 줄로 나눠주기 위한 모듈입니다.
from PIL import Image, ImageDraw, ImageFont
import textwrap
# 이후 사용 편의를 위하여 함수 형태로 만들었습니다.
def make_image(message):
# Image size
W = 640
H = 640
bg_color = 'rgb(214, 230, 245)' # 아이소프트존
# font setting
font = ImageFont.truetype('NanumSquareRoundR.ttf', size=28)
font_color = 'rgb(0, 0, 0)' # or just 'black'
# 원래 윈도우에 설치된 폰트는 아래와 같이 사용 가능하나,
# 아무리 해도 한글 폰트가 사용이 안 되어.. 같은 폴더에 다운받아 놓고 사용함.
# font = ImageFont.truetype("arial.ttf", size=28)
image =Image.new('RGB', (W, H), color = bg_color)
draw = ImageDraw.Draw(image)
# Text wraper to handle long text
# 40자를 넘어갈 경우 여러 줄로 나눔
lines = textwrap.wrap(message, width=40)
# start position for text
x_text = 50
y_text = 50
# 각 줄의 내용을 적음
for line in lines:
width, height = font.getsize(line)
draw.text((x_text, y_text), line, font=font, fill=font_color)
y_text += height
# height는 글씨의 높이로, 한 줄 적고 나서 height만큼 아래에 다음 줄을 적음
# 안에 적은 내용을 파일 이름으로 저장
image.save('{}.png'.format(message))
# 실행
make_image("01.12 Etudes,Op.10-No.01 in C-Allegro")
실행하면 맨 처음 예시와 같은 이미지가 만들어진다.
끝
후기
이제 거의 다 되었다. 지금까지의 기능들을 합쳐서, mp3 파일로 된 앨범을 통째로 동영상으로 만들 수 있도록 할 것이다.