Written by
Booki
on
on
Pillow를 사용한 썸네일 만들기
웹에 업로드 되는 이미지의 리사이징 그리고 썸네일 생성을 위해 Pillow 패키지를 활용해보았다.
Pillow 활용
설치
pillow를 설치해준다.
pip install pillow
기본 활용
Pillow패키지에는 Image 모듈 외에도 ImageColor, ImageDraw 등등 모듈이 많지만 썸네일 만들기에선 기본적인 Image 모듈만 사용해보았다.
from PIL import Image
import os
# 이미지 불러오기
image = Image.open('bo_oki.jpg')
# 썸네일 만들기
size = 128, 128
file, ext = os.path.splitext(infile)
image = Image.open(infile)
image.thumbnail(size)
image.save(file + '_thumbnail', "JPEG")
Django 모델에 적용
- Django 모델에 적용 시 save() 메서드를 오버라이드 한 후 썸네일 함수를 적용시키면 된다.
class Profile(models.Model):
# 로고 이미지 받을 필드
logo = models.ImageField(
upload_to='logo',
)
# 썸네일 처리 된 이미지 저장 필드
thumbnail = models.ImageField(
upload_to='logo_thumbs',
)
# save() 메서드 재정의
def save(self, *args, **kwargs):
if not self.create_thumbnail():
raise Exception('Failed creating thumbnails')
super(Profile, self).save(*args, **kwargs)
# 썸네일 처리
def create_thumbnail(self):
size = 128, 128
file, ext = os.path.splitext(infile)
image = Image.open(infile)
image.thumbnail(size)
...
image.save(file + '_thumbnail', "JPEG")
# thumbnail 필드에 저장
self.thumbnail.save()