[Python] 텍스트가 있는 이미지 만들기

개요

 아래와 같이 단순히 텍스트가 들어간 이미지를 만드려고 합니다.
 이유는 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 파일로 된 앨범을 통째로 동영상으로 만들 수 있도록 할 것이다.

 

 

댓글

Designed by JB FACTORY