[TIL] Python, Pillow

여주링·2021년 1월 27일
1

TIL

목록 보기
9/13
post-thumbnail

Python은 이미지를 어떻게 처리할까?

파이썬에서의 이미지를 처리하고 핸들링 하기 위해서는 외부 패키지를 이용한다. PIL(Python Image Library),Pillow,OpenCV 등 많은 패키지가 존재하는데, 이번에 기업협업에서는 Pillow 사용해서 작업을 하는것으로 결정되었다.

Pillow, 베개?


바로 이거 떠올린 나.. 그리고 you?

Pillow 공식사이트

이미지 처리에는 PIL, OpenCV, Pillow 등의 라이브러리가 사용 되는데, 그중 원조라고 하면 PIL(Python Image Library)로 이 명목을 이어오는게 Pillow이다.

PIL(Python Imaging Library)
Python Imaging Library(PIL)은 파이썬 인터프리터에 다양한 이미지 파일 형식을 지원하고 강력한 이미지 처리와 그래픽 기능을 제공하는 자유-오픈 소스 소프트웨어 라이브러리이다. PIL의 최신 버젼은 1.1.7이고 2009년 9월에 릴리즈 되었으며 파이썬 1.5-2.7을 지원한다.
개발은 2011년 PIL 저장소에 대한 마지막 커밋으로 중단된 것으로 보이며 Pillow라는 후속 프로젝트가 PIL 저장소에서 갈려져 나와 Python 3.x 지원을 추가 했다. Pillow는 PIL 후속 프로젝트로써 데비안 및 우분투 등의 리눅스 배포판에서 PIL을 대체하기 위해서 채택 되었다.(출처 : 위키백과)

PIL의 개발중단으로 python3이상에서 사용할 수 없게 되고 이를 대체하여 나타난 존재이다!
Pillow는 여러 이미지 파일 포맷을 지원하고, 이미지 내부 데이터를 엑세스할 수 있게 하며, 다양한 이미지 처리 기능을 제공한다.

설치

pip install Pillow

원하는 가상환경에서 설치하면 된다

사용법

설치가 끝났다면 거의 다한거다🙄 Pillow를 설치한 후 PIL라이브러리에 있는 Image클래스를 import하면 된다

❌주의사항❌
설치시에는 Pillow 패키지를 설치하지만, import 시에는 "import PIL"과 같이 PIL을 사용한다.
👉왜냐면 PIL을 기본으로 따르고 있기 때문

1. image파일 열기 및 저장

from PIL import Image

# 이미지 열기
im = Image.open('python.png')
 
# 이미지 크기 출력
print(im.size)
 
# 이미지 JPG로 저장(다른 포맷으로 저장하는거)
im.save('python.jpg')

2. image 썸네일 만들기

from PIL import Image

im = Image.open('파일명.png')

# thumnail(원하는 사이즈크기)
im.thumbnail((128, 128))

im.save('original.thumbnail.jpg')

여기서 주의점은, 사이즈 비율이 일치하지 않을경우 내가 지정한 사이즈 크기 만큼 잘리게 된다

3. 이미지 부분 잘라내기

crop 메서드를 사용하여 일부 영역을 잘라내는데, 리턴된 이미지는 부분 이미지로서 저장하게되면 잘라낸 이미지만 저장된다.

from PIL import Image
im = Image.open('python.png')
#crop(좌,상,우,하)
cropImage = im.crop((100, 100, 150, 150))
cropImage.save('python-crop.jpg')

4. 이미지 회전 및 Resize

이미지를 회전하기 위해서는 rotate 메서드를 사용한다.
이미지의 크기를 확대/축소하기 위해서는 이미지 객체에서 resize 메서드를 호출한다.

from PIL import Image
im = Image.open('python.png')
 
# 크기를 300x300 으로
img = im.resize((300, 300))
img.save('python-600.jpg')
 
# 90도 회전
img = im.rotate(90)
img.save('python-rotate.jpg')

5. 이미지 필터링

Pillow 패키지는 이미지를 필터링하기 위한 여러 기본적인 필터들을 제공하고 있다. filter 메서드를 호출하면 되는데, 필터종류는 ImageFilter 모듈을 import 하여 지정한다.

from PIL import Image, ImageFilter
 
im = Image.open('python.png')

#blur image를 원하면 BLUR사용
blurImage = im.filter(ImageFilter.BLUR)
 
blurImage.save('python-blur.png')

더 다양한 매서드가 존재하므로 필요한건 구글링이나 공식 문서 확인을 추천!

profile
🌱Backend Developer👩‍💻

2개의 댓글

comment-user-thumbnail
2021년 1월 29일

눈물 젖은 베개... 베어보셨습니까

1개의 답글