【发布时间】:2016-02-10 07:41:46
【问题描述】:
我通过 s3boto 使用 Amazon S3 作为我的存储后端。我有一个带有 ImageField 的图像模型。当通过管理员上传图像时,它已成功上传到 S3。我现在要做的是使用 Pillow 创建一个缩略图保存后。我已经通过调用它的 show() 方法验证了正在创建缩略图,但由于某种原因它没有被上传到 S3。我认为我保存它的方式可能是错误的 - 请提供任何建议。
tasks.py
from celery import shared_task
from .models import Image
import os
from django.core.files.storage import default_storage as storage
from PIL import Image as PillowImage
@shared_task
def create_thumbnails(pk):
try:
image = Image.objects.get(pk=pk)
except Image.ObjectDoesNotExist:
pass
thumbnail_size = (450,200)
filename, ext = os.path.splitext(image.image.name)
try:
fh = storage.open(image.image.name, 'r')
im = PillowImage.open(fh)
im.thumbnail(thumbnail_size)
im.show() # TEST - This opens the resized image in Preview on my mac
filename = filename +'_thumbnail' +ext
new_file = storage.open(filename, 'w')
im.save(new_file, "PNG")
new_file.close()
except IOError as error:
print("cannot create thumbnail for ", filename, 'error ', error)
堆栈
django 1.85
python 2.7.10
【问题讨论】: