我想创建上传图像文件的缩略图,并在文件名末尾用“_th”保存它们。目前,我使用以下代码:
def _create_thumbnail(img_path):
image = Image.open(img_path)
if image.mode not in ("L", "RGB"):
image = image.convert("RGB")
image.thumbnail(MEDIA_THUMBNAIL_SIZES, Image.ANTIALIAS)
return image.save(img_path, 'JPEG', quality=MEDIA_THUMBNAIL_QUALITY)
它会覆盖原始文件。有没有办法在文件扩展名之前轻松更改文件名以包含_th并将其保存在同一个地方?
另外,我使用以下方法在保存信号后保存缩略图:
@receiver(post_save, sender=Media, dispatch_uid="media_create_thumb")
def create_media_thumbnail(sender, **kwargs):
thumb = generate_thumbnail(kwargs['instance'].file)
我想知道这是否是一种使用信号的正常(pythonic?)方式?由于我没有使用django管理面板,因此使用admins post save不是一个选项。
这个创建缩略图的方法对用户开放,所以如果上面的代码有任何可能导致问题的内容,我会很感激你的抬头!
答案 0 :(得分:2)
我会尝试以下方法:
import os
(head, tail) = os.path.split(img_path)
(name,ext)=tail.split('.')
tail=name+'_th.'+ext
img_path=os.path.join(head,tail)
修改强> 正如我最近发现的那样,你甚至可以简化:
(name,ext)=os.path.splitext(img_path)
img_path = name + '_th.' + ext