我定义了一个函数,为模型中上传的每个图像创建缩略图。 以下是我的代码:
def create_thumbnail(self):
if not self.coverphoto:
return
from PIL import Image
from cStringIO import StringIO
from django.core.files.uploadedfile import SimpleUploadedFile
import os
# Set our max thumbnail size in a tuple (max width, max height)
THUMBNAIL_SIZE = (200,200)
DJANGO_TYPE = self.coverphoto.file.content_type
if DJANGO_TYPE == 'image/jpeg':
PIL_TYPE = 'jpeg'
FILE_EXTENSION = 'jpg'
elif DJANGO_TYPE == 'image/png':
PIL_TYPE = 'png'
FILE_EXTENSION = 'png'
elif DJANGO_TYPE == 'image/gif':
PIL_TYPE = 'gif'
FILE_EXTENSION = 'gif'
# Open original photo which we want to thumbnail using PIL's Image
image = Image.open(StringIO(self.coverphoto.read()))
image.thumbnail(THUMBNAIL_SIZE, Image.ANTIALIAS)
# Save the thumbnail
temp_handle = StringIO()
image.save(temp_handle, PIL_TYPE)
temp_handle.seek(0)
# Save image to a SimpleUploadedFile which can be saved into
# ImageField
suf = SimpleUploadedFile(os.path.split(self.coverphoto.name)[-1],
temp_handle.read(), content_type=DJANGO_TYPE)
# Save SimpleUploadedFile into image field
self.coverphoto_thumbnail.save('%s_thumbnail.%s'%(os.path.splitext(suf.name)[0],FILE_EXTENSION), suf,save=False)
当我运行单元测试时,它显示错误:
^{pr2}$显示的误差线为:
DJANGO_TYPE = self.coverphoto.file.content_type
因为我从一个老的django代码片段中得到了这段代码。我想这可能是由不同的django版本引起的。在
我可以知道如何检查django1.6中的内容类型吗?在
有没有解决这个问题的好办法?在
谢谢。在
我用下面的方法解决了这个问题:
对我有用。不需要查找conten_类型,只需查看文件结尾。如果需要.gif或其他内容,则需要查找正确的内容类型并添加其他
self.image.name.endswith(".gif")
等等。在相关问题 更多 >
编程相关推荐