Django上传图片生成成缩略图的类
- 作者: 贝壳116
- 来源: 51数据库
- 2022-08-12
这段代码通过pil生成缩略图,主要通过save函数保存缩略图,自定义了图片的保存位置和原图片位置,可以自己更改,可以指定缩略图的大小。
from PIL import Image
from cStringIO import StringIO
from django.core.files.uploadedfile import SimpleUploadedFile
class Photo(models.Model):
#from sharejs.com
title = models.CharField(max_length = 100)
image = models.ImageField(upload_to ="photos/originals/%Y/%m/")
image_height = models.IntegerField()
image_width = models.IntegerField()
thumbnail = models.ImageField(upload_to="photos/thumbs/%Y/%m/")
thumbnail_height = models.IntegerField()
thumbnail_width = models.IntegerField()
caption = models.CharField(max_length = 250, blank =True)
def __str__(self):
return "%s"%self.title
def __unicode__(self):
return self.title
def save(self, force_update=False, force_insert=False, thumb_size=(180,300)):
image = Image.open(self.image)
if image.mode not in ('L', 'RGB'):
image = image.convert('RGB')
# save the original size
self.image_width, self.image_height = image.size
image.thumbnail(thumb_size, Image.ANTIALIAS)
# save the thumbnail to memory
temp_handle = StringIO()
image.save(temp_handle, 'png')
temp_handle.seek(0) # rewind the file
# save to the thumbnail field
suf = SimpleUploadedFile(os.path.split(self.image.name)[-1],
temp_handle.read(),
content_type='image/png')
self.thumbnail.save(suf.name+'.png', suf, save=False)
self.thumbnail_width, self.thumbnail_height = image.size
# save the image object
super(Photo, self).save(force_update, force_insert)
推荐阅读
热点文章
Discord.py(重写)on_member_update 无法正常工作
0
Discord.py 在 vc 中获取用户分钟数
0
discord.py 重写 |为我的命令出错
0
Discord.py rewrite 如何 DM 命令?
0
播放音频时,最后一部分被切断.如何解决这个问题?(discord.py)
0
在消息删除消息 Discord.py
0
如何使 discord.py 机器人私人/直接消息不是作者的人?
0
(Discord.py) 如何获取整个嵌入内容?
0
Discord bot 尽管获得了许可,但不能提及所有人
0
Discord.py discord.NotFound 异常
0
