본문 바로가기
Integration & Python

Pillow 파이썬 이미지 처리 라이브러리

by 누워서 코딩 2021. 2. 25.

파이썬에서 이미지 처리하고 핸들링하기 위해서는 파이썬에서 제공하는 패키지를 설치해야 한다.

이런 이미지 처리와 핸들링을 위한 외부 패키지로는 Pillow, OpenCV, PIL와 같은 패키가 있다.

 

 

여기서 PIL 계열로 계승된 패키지로 Pillow라는 유용한 패키지가 있어 소개한다.

 

설치 방법:

pip install Pillow

 

Pillow 이미징 라이브러리 특징:

1. 여러 이미지 파일의 포맷을 지원

2. 이미지 내부 데이터 접근 가능

3. 다양한 이미지 처리 기능 제공

 

Pillow으로 어떤 일들을 수 있나?

썸네일(Thumbnail) 이미지 만들기, 다른 이미지의 포맷으로 변환, 이미지 변형(크기, 회전, 필터링 등)과 같은 프로세싱 작업

 

 

1. 이미지 열기, 출력, 저장 예제

from PIL import Image
# 이미지 열기
im = Image.open('1.jpg')
# 이미지 크기 출력
print(im.size)
# Thumbnail 이미지 생성
size = (960, 480)
im.thumbnail(size)
# 이미지 png로 저장
im.save('1_1.png')

pillow
원본-이미지-1280x640-pixel

 

 

960x480
960x480-pixel

2. 이미지 부분적으로 자르기

crop() 함수를 사용하면 이미지 자르기(Cropping)가 가능하다.

자를 위치를 옵션으로 주어 원하는 위치 (상, 하, 좌, 우)로 잘라 저장할 수 있다.

 

from PIL import Image
im = Image.open('1.png')
cropImage = im.crop((50, 50, 100, 100))
cropImage.save('crop.jpg')

 

3. 이미지 회전 / Resize

rotate 함수로 이미지의 방향을 회전시킬 수 있다.

또한 resize함수로 이미지의 크기를 확대/축소도 가능하다.

 

from PIL import Image
im = Image.open('1_1.png')

# 이미지 크기 출력
print(im.size)

img2 = im.resize((480, 240))
img2.save('python_size-480_240.jpg')
# 90도 회전
img3 = im.rotate(90)
img3.save('python-rotate_90.jpg')

 

Tip: 다음의 에러 발생 시 아래의 코드 추가한다.

 

OSError: cannot write mode RGBA as JPEG
# OSError: cannot write mode RGBA as JPEG
if im.mode in ("RGBA", "P"):
im = im.convert("RGB")

 

RGB-깨짐
RGB-깨짐
90도-회전
90도-회전

 

4. 이미지 필터링

Pillow 패키지는 기본적인 몇 가지의 이미지 필터들을 제공한다.

ImageFilter 모듈을 import로 지정한 후 사용 가능하다.

 

아래 예제는 BLUR 필터를 사용하는 예제이다.

이미지의 테두리 윤곽만 표시하려면 ImageFilter.CONTOUR  옵션을 사용하면 된다.

 

from PIL import Image, ImageFilter
 
im = Image.open('1.png')
blurImage = im.filter(ImageFilter.BLUR)
 
blurImage.save('python-blur.png')

BLUR-필터
BLUR-필터


이 블로그의 다른 포스팅 읽기

 

파이심플GUI(PySimpleGUI) 예

pysimplegui 설치 방법 다음 명령으로 pysimplegui 를 설치합니다. venv와 같은 가상환경에서도 설치가 가능합니다. 참고로 필자는 selenium이 설치된 경로에 pysimplegui를 설치하였습니다. 설치 명령: $ python

freernd.tistory.com

댓글