이미지 사이즈를 조정할 때 활용 가능한 Python Pillow resize 사용 방법을 살펴보겠습니다.
목차
Python Pillow resize 사용 방법
우선 Image 모듈의 resize 메서드는 말 그대로 이미지 크기를 변경할 때 사용하는 방법입니다.
설명보다 실습, 실습보다 결과물 먼저 보고 가시죠. 다음은 resize를 적용할 원본 이미지입니다. 원본 이미지의 크기는 772⨯364px 입니다.
이미지 크기 줄이기: 고정값
아래 그림 2는 위의 그림 1을 100⨯100px으로 resize한 결과입니다.
사용방법은 매우 간단합니다. resize 메서드의 size 파라미터에 tuple로 (width, height)값을 넣어주면 됩니다.
from PIL import Image
img = Image.open("test.png")
img = img.resize(size=(100, 100))
img.save("output.png")
Python그런데 혹시 그림 2를 보면서 불편함을 느낀 분 계시지 않을까요? 폭과 높이를 100으로 임의 지정해 버리면서 원본 이미지의 비율이 망가졌습니다. 그래서 내용물은 세로로 길쭉해져 버렸습니다.
이미지 크기 줄이기: 비율
비율에 맞춰서 resize하려면 원본 이미지의 width와 height를 가져와서 이미지의 비율을 구해서 활용하면 됩니다. 6번 라인에서 new_height를 구할 때 꼭 int로 형변환을 해 주어야 합니다. resize에서 받는 tuple에 들어가는 값은 정수형 값이기 때문입니다. 만약 float 상태로 들어가면 “TypeError: integer argument expected, got float”와 같은 메시지를 만나게 됩니다.
from PIL import Image
img = Image.open("test.png")
ratio = img.height / img.width
new_width = 200
new_height = int(ratio * new_width)
img = img.resize((new_width, new_height))
img.save("output.png")
Python위의 코드를 실행한 결과는 아래의 그림 3과 같습니다.
이미지 크기 확대하기
특정 영역만 resize하기를 원하는 경우에는 box 파라미터를 추가로 사용하면 됩니다. 이번에는 원본 이미지의 (100, 100)부터 (300, 300)까지의 200⨯200px 크기의 이미지를 300⨯300px의 크기로 키웠습니다.
from PIL import Image
img = Image.open("test.png")
ratio = img.height / img.width
img = img.resize(size=(300, 300), box=(100, 100, 300, 300))
img.save("output.png")
Python굳이 crop을 하고 이미지를 다시 resize하는 방법도 있겠지만, resize 메서드만으로도 가능하다는 점 알고 계시면 코드를 보다 간결하게 유지할 수 있을 거에요.
여기까지 Python 코드로 Pillow의 Image 모듈의 resize 메서드를 이용한 이미지 크기 조정 방법을 살펴보았습니다.
관련 자료
Pillow 패키지의 Image Module 페이지에서 resize 메서드 부분을 참고했습니다.