django-imageKit 정리
by Haebin Seo
django-imageKit 정리
Imagekit[1]
Imagekit은 이미지 처리를 위한 Django app이다. resizing이나 cropping같은 작업을 처리하는데 사용된다.
- ImageSpecField class
django.db.models.ImageField
와 매우 유사하게 작동한다. 다만 주어진 옵션대로 자동으로 처리된 이미지를 생성한다는 차이가 있다. form에서는 렌더링되지 않는다.from django.db import models from imagekit.models import ImageSpecField from imagekit.processors import ResizeToFill class Profile(models.Model): avatar = models.ImageField(upload_to='avatars') avatar_thumbnail = ImageSpecField(source='avatar', processors=[ResizeToFill(100, 50)], format='JPEG', options={'quality': 60}) profile = Profile.objects.all()[0] print profile.avatar_thumbnail.url # > /media/CACHE/images/982d5af84cddddfd0fbf70892b4431e4.jpg print profile.avatar_thumbnail.width # > 100
- ProcessedImageField class
원본이미지가 필요없을 때 사용하면 된다.from django.db import models from imagekit.models import ProcessedImageField class Profile(models.Model): avatar_thumbnail = ProcessedImageField(upload_to='avatars', processors=[ResizeToFill(100, 50)], format='JPEG', options={'quality': 60}) profile = Profile.objects.all()[0] print profile.avatar_thumbnail.url # > /media/avatars/MY-avatar.jpg print profile.avatar_thumbnail.width # > 100
ProcessedImageField
는 ImageFields 처럼 파일 경로를 데이터베이스에 저장하기 때문에 upload_to
인자가 필요하다. 또한 model에 ProcessedImageField를 추가할 시 이를 반영하기 위해 migrate해야 한다.
하지만 ImageSpecField
는 가상의 field라서 데이터베이스에 저장하지 않는다. 생성된 이미지는 local의 django.conf.settings.IMAGEKIT_CACHEFILE_DIR
에 저장된다. default는 CACHE/images이다.
-
upload_to[2]
파일이 업로드될 경로를 제공한다. 만약 default FileSystemStorage class를 사용한다면MEDIA_ROOT
경로가 앞에 추가된다. upload_to는 함수와 같은 callable이 올 수도 있다. 이 경우에는instance
와filename
을 인자로 받고, 파일 이름을 포함하는 Unix-style의 업로드 경로를 반환해야 한다.- instance는 생성된 파일의 인스턴스를 의미하며 파일 경로에 이를 활용할 수 있다.
다만 호출 시점에서는 데이터베이스에 저장되기 전이므로 instance.pk는 사용할 수 없다. - filename은 확장자를 포함한다.
- instance는 생성된 파일의 인스턴스를 의미하며 파일 경로에 이를 활용할 수 있다.
참조
Subscribe via RSS