pillow text 추가
Pillow
라이브러리를 사용하여 이미지에 텍스트를 추가하는 방법을 더 자세히 설명하겠습니다. Pillow
의 ImageDraw
모듈을 사용하면 이미지에 텍스트를 그릴 수 있으며, ImageFont
를 사용하여 글꼴과 크기도 조정할 수 있습니다.
1. 기본 텍스트 추가
ImageDraw.Draw().text()
메서드를 사용하여 이미지를 불러오고 텍스트를 추가할 수 있습니다.
예제 코드: 이미지에 텍스트 추가하기
from PIL import Image, ImageDraw, ImageFont
# 이미지 열기
image = Image.open('example.jpg')
# ImageDraw 객체 생성 (이미지에 그리기 작업을 위한 객체)
draw = ImageDraw.Draw(image)
# 텍스트를 추가할 위치 (x, y 좌표)
position = (100, 100)
# 텍스트 내용
text = "Hello, World!"
# 기본 폰트를 사용하여 텍스트 추가 (fill은 텍스트 색상)
draw.text(position, text, fill=(255, 255, 255))
# 이미지 저장
image.save('image_with_text.jpg')
# 이미지 보기
image.show()
2. 폰트와 크기 설정
ImageFont.truetype()
을 사용하여 텍스트의 폰트와 크기를 설정할 수 있습니다. 폰트 파일(.ttf
확장자)을 제공하여 원하는 스타일의 글꼴을 적용할 수 있습니다.
예제 코드: 폰트 설정하여 텍스트 추가하기
from PIL import Image, ImageDraw, ImageFont
# 이미지 열기
image = Image.open('example.jpg')
# ImageDraw 객체 생성
draw = ImageDraw.Draw(image)
# 텍스트를 추가할 위치 (x, y 좌표)
position = (100, 100)
# 텍스트 내용
text = "Hello, World!"
# 폰트 설정 (Windows의 기본 'arial.ttf' 폰트)
font = ImageFont.truetype("arial.ttf", size=50)
# 텍스트 추가 (폰트와 색상 적용)
draw.text(position, text, font=font, fill=(255, 255, 255))
# 이미지 저장
image.save('image_with_text_custom_font.jpg')
# 이미지 보기
image.show()
3. 텍스트의 배경 색 추가
텍스트의 배경 색을 추가하기 위해서는 text()
메서드를 사용하기 전에 텍스트가 표시될 영역에 사각형을 그려줄 수 있습니다.
예제 코드: 텍스트에 배경 색 추가
from PIL import Image, ImageDraw, ImageFont
# 이미지 열기
image = Image.open('example.jpg')
# ImageDraw 객체 생성
draw = ImageDraw.Draw(image)
# 텍스트를 추가할 위치 (x, y 좌표)
position = (100, 100)
# 텍스트 내용
text = "Hello, World!"
# 폰트 설정 (Windows의 기본 'arial.ttf' 폰트)
font = ImageFont.truetype("arial.ttf", size=50)
# 텍스트의 크기를 계산
bbox = draw.textbbox((0,0), text, font=font)
text_width, text_height = bbox[2] - bbox[0], bbox[3] - bbox[1]
# 텍스트 배경 사각형 그리기
draw.rectangle((position[0], position[1], position[0] + text_width, position[1] + text_height), fill=(0, 0, 0))
# 텍스트 추가
draw.text(position, text, font=font, fill=(255, 255, 255))
# 이미지 저장
image.save('image_with_text_background.jpg')
# 이미지 보기
image.show()
4. 텍스트의 투명도 조절
투명 텍스트를 추가하려면 이미지의 알파 채널을 수정해야 합니다. 이를 위해 RGBA 모드를 사용하여 투명한 텍스트를 그릴 수 있습니다.
예제 코드: 텍스트에 투명도 적용하기
from PIL import Image, ImageDraw, ImageFont
# 이미지 열기
image = Image.open('example.jpg').convert("RGBA")
# 투명한 이미지 레이어 생성
txt_layer = Image.new('RGBA', image.size, (255, 255, 255, 0))
# ImageDraw 객체 생성
draw = ImageDraw.Draw(txt_layer)
# 폰트 설정
font = ImageFont.truetype("arial.ttf", size=50)
# 텍스트를 추가할 위치
position = (100, 100)
# 텍스트 추가 (투명도 128 설정)
draw.text(position, "Transparent Text", font=font, fill=(255, 255, 255, 128))
# 이미지와 텍스트 레이어 합성
combined = Image.alpha_composite(image, txt_layer)
# 이미지 저장
combined.save('image_with_transparent_text.png')
# 이미지 보기
combined.show()
5. 여러 줄의 텍스트 추가
이미지에 여러 줄의 텍스트를 추가하려면 줄 바꿈을 수동으로 처리할 수 있습니다.
예제 코드: 여러 줄 텍스트 추가
from PIL import Image, ImageDraw, ImageFont
# 이미지 열기
image = Image.open('example.jpg')
# ImageDraw 객체 생성
draw = ImageDraw.Draw(image)
# 폰트 설정
font = ImageFont.truetype("arial.ttf", size=30)
# 여러 줄 텍스트
text = "Hello, World!\nThis is Pillow library."
bbox = draw.textbbox((0,0), text,font=font)
text_width, text_height = bbox[2] - bbox[0], bbox[3] - bbox[1]
# 줄 바꿈을 처리하며 텍스트를 그리기
x, y = 100, 100
for line in text.split('\n'):
draw.text((x, y), line, font=font, fill=(255, 255, 255))
y += text_height # 줄 간격을 설정
# 이미지 저장
image.save('image_with_multiline_text.jpg')
# 이미지 보기
image.show()
요약
Pillow
의ImageDraw
모듈을 사용하여 이미지에 텍스트를 추가할 수 있습니다.- 폰트와 크기를 설정하려면 **
ImageFont.truetype()
**을 사용합니다. - 텍스트의 배경을 추가하거나 투명도를 조절할 수 있으며, 여러 줄 텍스트도 처리 가능합니다.