반원 블로그

8. pillow : 이미지 패키지(1) - info, crop, thumbnail, resize 본문

2018~/Python Skill Up

8. pillow : 이미지 패키지(1) - info, crop, thumbnail, resize

반원_SemiCircle 2019. 9. 6. 10:27

개요

이미지 처리를 도와주는 패키지 pillow를 사용하여, 이미지의 크기 조작, 자르기, 추출등을 해본다. 또한 현재 화면을 캡처하는 등의 기능도 수행할 수 있다.
레퍼런스 문서

설치

pip3 install pillow

관련 패키지와 모듈

  • pyautugui
  • os

사전배경

기존 PIL이라고 하는 이미지 처리 프로젝트가 완성도가 높아 마무리되었는데, 이후 문제가 발생했다. python2에서는 문제가 없었으나 이후 버전업되며 출시되는 python3에 지원은 이루어지지 않았기 때문이다.

이후로 등장한게 pillow이며, 위 이유탓인지 특이하게 pillow 패키지를 설치하는데 코드에서는 PIL을 참조한다.

핵심 클래스

  • Image : pillow

핵심 함수

  • crop
  • resize
  • thumbnail

기본 예제 - 이미지 정보 조회

참고

from PIL import Image
img = Image.open('./images/01.jpg') #PIL로 가공가능한 형태로 이미지 로드

#현재 img 사진 확인하기(원본을 여는게 아님)
img.show()

#사진 정보 확인
print(img.size) #(너비, 높이)
print(img.width) #너비만
print(img.height) #높이만
print(img.filename)
print(img.mode)
print(img.info)

img.close()

기본 예제 - resize

from PIL import Image
img = Image.open('./images/01.jpg') #PIL로 가공가능한 형태로 이미지 로드

#크기 조정
resize_img = img.resize((100,100)) #(width, height)
resize_img.save('./resize/01.jpg')
img.close()

기본 예제 - thumbnail

from PIL import Image
img = Image.open('./images/01.jpg') #PIL로 가공가능한 형태로 이미지 로드

#크기 조정
img.thumbnail((100, 100)) #(width,height)
img.save('./thumbnail/01.jpg')
img.close()

기본 예제 - crop

from PIL import Image
img = Image.open('./images/01.jpg') #PIL로 가공가능한 형태로 이미지 로드

#크기 조정
resize_img = img.crop((10, 10, 300, 300)) #(left, upper, right, lower)
resize_img.save('./crop/01.jpg')
img.close()

응용 - for문을 이용한 resize

from PIL import Image
import os
#파일 명 전부 로드
img_list = os.listdir('./images/')
print("파일명 : ", img_list)

for img_name in img_list:
   img = Image.open('./images/'+img_name) #PIL로 가공가능한 형태로 이미지 로드

   #크기 조정
   resize_img = img.resize((100,100))
   resize_img.save('./resize/'+img_name)
   img.close()
Comments