Python에서 이미지를 추가하는 경우 썸네일(Thumbnail) 이미지가 필요한 경우가 있습니다. 아니면 리사이즈 된 이미지를 저장할 수도 있죠. 어떻게 하면 썸네일을 쉽고 빠르게 만들 수 있는지 알아봅니다.



# Python Pillow 라이브러리
Python에서 사용가능한 패키지로 PIL 또는 Pillow가 존재합니다. PIL은 Python Image Library의 약자로 다양한 기능을 가지고 있습니다. 그 중에는 물론 이미지의 크기를 조절할 수 있습니다.




! Python에 PIL 설치하기
먼저 PIL을 설치하는 방법을 알아봅니다. 설치를 하기 위해 아래와 같이 Package를 다운로드합니다.
> pip install Pillow

인스톨이 끝나면 이제 썸네일을 생성하는 방법을 알아봅니다.


! Python 썸네일 또는 리사이즈 알아보기
리사이즈를 수행하기 위하여 아래의 코드를 추가합니다.

@ 파이썬 파일 /upload/ 경로에 업로드
# Create thumbnail Example
im = Image.open('test.jpg')
size = (128, 128)
im.thumbnail(size)
im.save('test_th.jpg')

그럼 아래부터는 위 코드를 자세히 알아봅니다. 참고로 이미지가 심하게 깨지는 것을 방지하려면 아래와 같이 thumbnail()에 옵션을 추가하여 사용합니다.

im.thumbnail(size, Image.ANTIALIAS)



@ 이미지 불러오기 // im = Image.open()
해당 파일을 불러옵니다. 현재 위치에 test.jpg가 존재해야합니다. 참골, 상대경로를 사용할 수 있습니다. 즉 ('./test.jpg')와 같이 사용할 수 있습니다. 경로의 base 폴더 기준은 실행되는 Python 파일의 위치입니다.


@ 이미지 사이즈 설정하기 // im.thumbnail(size)
size는 생성될 썸네일 사이즈의 크기를 결정합니다. 이때 값은 각각 width와 height의 최소 값으로 사용되며 자동으로 비율이 유지됩니다. 예를들어 만약 (200, 400)인 경우 최대 width 400 그리고 height 최대 200을 의미합니다. im.thumbnail(size)는 썸네일을 적용합니다.


@ 이미지 저장하기 // im.save()
해당하는 이름으로 파일을 저장합니다.


이제 모든 준비가 끝났습니다. 아래는 파일을 추가하는 html 파일로 필요한 경우 참고하시기 바랍니다.
<form method="post" enctype="multipart/form-data" action="/uploadfile/">
  <input type="file" name="file" />
  <button type="submit">Upload</button>
</form>

위 코드는 post 메소드 방식으로 파일을 uploadfile의 경로에 보내게 됩니다.