CodeGym /행동 /Python SELF KO /그리기: 텍스트, 선, 워터마크

그리기: 텍스트, 선, 워터마크

Python SELF KO
레벨 46 , 레슨 0
사용 가능

1. 이미지에 텍스트 추가하기

Pillow에서 이미지에 텍스트를 추가하려면 ImageDraw 모듈을 사용해. 이 모듈은 text() 메서드를 제공하며, 지정된 좌표에 텍스트를 보여줄 수 있어.

간단한 텍스트 추가

                
from PIL import ImageDraw, ImageFont

# 그리기 객체 생성
draw = ImageDraw.Draw(image)

# 이미지에 텍스트 추가
text = "텍스트 예제"
draw.text((50, 50), text, fill="white")

# 텍스트가 추가된 이미지 저장
image.save("text_example.jpg")
                
            

이 예제에서는 "텍스트 예제"라는 텍스트가 (50, 50) 좌표에 추가돼. fill 파라미터는 텍스트의 색을 지정하며, 문자열("white", "black") 또는 RGB 형식((255, 255, 255))으로 색을 지정할 수 있어.

텍스트 폰트 설정

기본적으로 Pillow는 기본 폰트를 사용해. 다른 폰트를 선택하고 폰트 크기를 설정하려면 ImageFont.truetype()을 사용해. 폰트 파일이 시스템에 있어야 해.

                
# 폰트 로드
font = ImageFont.truetype("arial.ttf", 36)

# 사용자 지정 폰트를 사용하는 텍스트 추가
draw.text((50, 100), text, font=font, fill="yellow")
image.save("text_custom_font_example.jpg")
                
            

여기서는 arial.ttf 폰트에 36 픽셀 크기를 사용했어. 필요한 폰트가 없다면 다운로드 후 파일 경로를 지정하면 돼.

2. 워터마크 추가하기

워터마크는 반투명 텍스트나 이미지로, 사진에 덧씌워져서 복사를 방지하는 데 사용돼. 로고나 저작자 정보를 추가할 때 유용해. Pillow에서는 간단한 텍스트 워터마크를 만들 수 있어.

텍스트 워터마크

                
# 그리기 객체 생성
draw = ImageDraw.Draw(image)

# 워터마크 텍스트와 폰트
watermark_text = "© 2023 My Company"
font = ImageFont.truetype("arial.ttf", 24)

# 워터마크 위치 설정
width, height = image.size
text_width, text_height = draw.textsize(watermark_text, font=font)
x = width - text_width - 10
y = height - text_height - 10

# 오른쪽 아래에 워터마크 추가
draw.text((x, y), watermark_text, font=font, fill=(255, 255, 255, 128))
image.save("watermarked_example.jpg")
                
            

이 예제에서는 텍스트 워터마크가 이미지의 오른쪽 아래에 추가돼. 워터마크가 이미지 경계에서 약간 떨어지도록 xy를 계산했어.

3. 그래픽 요소 추가하기

Pillow는 텍스트 외에도 선, 사각형, 원, 타원 같은 기본 그래픽 요소를 그릴 수 있어. 이 기능은 테두리 생성, 영역 강조 표시, 도형 추가 등에 유용해.

선 그리기

선을 그리려면 line() 메서드를 사용해. 이 메서드는 선의 시작과 끝 좌표를 받아.

                
# 왼쪽 위에서 오른쪽 아래로 선 그리기
draw.line((0, 0, width, height), fill="red", width=5)
image.save("line_example.jpg")
                
            

이 코드는 왼쪽 위에서 오른쪽 아래로 대각선으로 지나가는 빨간색 선을 그려.

사각형 그리기

사각형은 rectangle() 메서드를 사용해 그릴 수 있어. 이 메서드는 사각형의 왼쪽 상단과 오른쪽 하단의 좌표를 받아.

                
# 사각형 그리기
draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
image.save("rectangle_example.jpg")
                
            

여기서는 파란색 윤곽선과 두께가 3픽셀인 사각형을 만들었어. fill 파라미터를 사용해서 사각형을 색으로 채울 수도 있어.

원과 타원 그리기

ellipse() 메서드는 원과 타원을 그리도록 도와줘. 같은 폭과 높이를 지정하면 원이 그려져.

                
# 원 그리기
draw.ellipse((150, 150, 250, 250), outline="green", width=4)
image.save("circle_example.jpg")
                
            

이 예제에서는 좌표가 (200, 200)인 중심을 기준으로 원이 만들어져. 폭과 높이가 다르면 타원이 그려질 거야.

다각형 그리기

다각형을 그리려면 polygon() 메서드를 사용해. 이 메서드는 도형의 꼭짓점 좌표를 받아.

                
# 삼각형 그리기
draw.polygon([(100, 100), (150, 50), (200, 100)], outline="purple", fill="orange")
image.save("polygon_example.jpg")
                
            

이 코드는 오렌지색 채우기와 보라색 윤곽선으로 삼각형을 그려. 꼭짓점의 좌표를 지정해 어떤 형태의 도형이든 만들 수 있어.

4. 예제들

텍스트와 그래픽이 포함된 컴포지션 예제

위에서 배운 모든 걸 합쳐서 텍스트, 워터마크, 그래픽 요소가 포함된 이미지를 만들어보자.

                
from PIL import Image, ImageDraw, ImageFont

# 이미지 로드
image = Image.open("example.jpg")
draw = ImageDraw.Draw(image)

# 텍스트 추가
font = ImageFont.truetype("arial.ttf", 36)
draw.text((50, 50), "데모 텍스트", font=font, fill="yellow")

# 오른쪽 아래에 워터마크 추가
watermark_text = "© 2023 My Company"
font_watermark = ImageFont.truetype("arial.ttf", 24)
width, height = image.size
text_width, text_height = draw.textsize(watermark_text, font=font_watermark)
x = width - text_width - 10
y = height - text_height - 10
draw.text((x, y), watermark_text, font=font_watermark, fill=(255, 255, 255, 128))

# 선, 사각형, 원 그리기
draw.line((0, 0, width, height), fill="red", width=5)
draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
draw.ellipse((150, 150, 250, 250), outline="green", width=4)

# 결과 저장
image.save("final_composition_example.jpg")
                
            

이 예제는 텍스트, 워터마크, 여러 그래픽 요소(선, 사각형, 원)가 포함된 이미지를 만들어. 이런 컴포지션은 발표 자료, 블로그, 프로페셔널 이미지 제작에 활용할 수 있어.

실무 활용 예시

  • 이미지 마크 및 보호: 워터마크는 이미지의 무단 사용을 방지하고 텍스트로 저작자 정보나 회사 정보를 추가할 수 있어.
  • 소셜 미디어용 이미지 준비: 텍스트와 그래픽을 추가하여 게시물에 추가 정보를 제공하거나 스타일을 더할 수 있어.
  • 인포그래픽 및 데이터 시각화: 선과 도형 같은 그래픽 요소를 사용하여 단순한 그래프나 다이어그램을 만들 수 있어서 Pillow는 인포그래픽 제작에 아주 유용해.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION