pillow text 추가

Pillow 라이브러리를 사용하여 이미지에 텍스트를 추가하는 방법을 더 자세히 설명하겠습니다. PillowImageDraw모듈을 사용하면 이미지에 텍스트를 그릴 수 있으며, 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()

요약

  • PillowImageDraw 모듈을 사용하여 이미지에 텍스트를 추가할 수 있습니다.
  • 폰트크기를 설정하려면 **ImageFont.truetype()**을 사용합니다.
  • 텍스트의 배경을 추가하거나 투명도를 조절할 수 있으며, 여러 줄 텍스트도 처리 가능합니다.

댓글 쓰기

댓글 목록