본문 바로가기
Python

[Python] Pillow 라이브러리로 이미지 처리하기

by teamnova 2023. 12. 3.
728x90

이번에는 Python Imaging Library인 Pillow 라는 라이브러리로 이미지를 처리하는 예제를 진행하겠습니다.

 

1. Pillow 설치

pip install Pillow

 

 

2. 이미지 그레이스케일 변환 및 회전

from PIL import Image, ImageFilter

# 이미지를 불러옵니다.
im = Image.open('data/src/lenna_square.png') 

# 형식, 크기(너비, 높이), 모드 등의 메타 정보를 가져옵니다. 
# PNG (512, 512) RGB
print(im.format, im.size, im.mode) 

#RGB 각 색상의 최소값과 최대값을 구합니다.
# ((54, 255), (3, 248), (8, 225))
print(im.getextrema()) 

# 지정된 좌표의 픽셀 값을 가져옵니다. 좌표 원점은 (0, 0)왼쪽 위입니다.
# (180, 65, 72)
print(im.getpixel((256, 256)))

# 그레이스케일 변환( convert('L')), 90도 회전( rotate(90)), 가우시안 블러( filter()) 처리가 수행됩니다.
new_im = im.convert('L').rotate(90).filter(ImageFilter.GaussianBlur())

# 이미지를 표시합니다.
new_im.show()

# 처리된 이미지를 저장합니다.
new_im.save('data/dst/lenna_square_pillow.jpg', quality=95)

 

 

 - 결과

 

 

 

3. 도형 및 글자 표시

from PIL import Image, ImageDraw, ImageFont

im = Image.new("RGB", (512, 512), (128, 128, 128))

# Image객체를 인수로 지정 하고 Draw객체를 생성합니다.
draw = ImageDraw.Draw(im)

# 직선, 직사각형, 타원을 그립니다
draw.line((0, im.height, im.width, 0), fill=(255, 0, 0), width=8)
draw.rectangle((100, 100, 200, 200), fill=(0, 255, 0))
draw.ellipse((250, 300, 450, 400), fill=(0, 0, 255))

# 저장된 폰트를 불러와서 텍스트를 그립니다.
font = ImageFont.truetype('/Library/Fonts/Arial Bold.ttf', 48)
draw.multiline_text((0, 0), 'Pillow sample', fill=(0, 0, 0), font=font)

 

 - 결과