본문 바로가기
Python

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

by teamnova 2023. 12. 3.

이번에는 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)

 

 - 결과