Django简易缩略图与Soll缩略图的区别

Django简易缩略图与Soll缩略图的区别,django,sorl-thumbnail,django-imagekit,easy-thumbnails,Django,Sorl Thumbnail,Django Imagekit,Easy Thumbnails,我一直在阅读并尝试各种Django的缩略图应用程序。这些是要求: 所有生成的缩略图必须保存在与原始图像分开的S3存储桶中,即单独的存储类 删除图像实例时,还必须删除原始图像文件以及所有生成的缩略图 最大限度地降低昂贵的低效率,例如,获取缩略图的url以在DRF中序列化,不应该每次都查看S3 bucket以查看它是否存在,等等 VersatileImageField未满足第一个要求。ImageKit不符合第二个要求。第三个要求是我最困惑的地方;我试图让自己了解最佳实践,但信息是零碎的,我没有信

我一直在阅读并尝试各种Django的缩略图应用程序。这些是要求:

  • 所有生成的缩略图必须保存在与原始图像分开的S3存储桶中,即单独的存储类

  • 删除图像实例时,还必须删除原始图像文件以及所有生成的缩略图

  • 最大限度地降低昂贵的低效率,例如,获取缩略图的url以在DRF中序列化,不应该每次都查看S3 bucket以查看它是否存在,等等

VersatileImageField未满足第一个要求。ImageKit不符合第二个要求。第三个要求是我最困惑的地方;我试图让自己了解最佳实践,但信息是零碎的,我没有信心根据迄今为止学到的知识做出决定

根据我所读到的,我的印象是,最有效的行为如下:

  • 保存后立即生成缩略图,并假定它始终存在
  • 要访问缩略图,请根据原始图像的文件名和缩略图尺寸/质量生成URL,因为我们知道它确实存在
  • post_delete将删除所有缩略图和原始文件

我最感兴趣的是了解easy thumbnail和sorl thumbnail采用的方法的差异(如果它们与我上面简要介绍的过程一致,或者它们有更有效的方法),以及它们各自方法的优缺点。

我不确定这是否有用,但我在过去使用过简单的缩略图,我敢肯定,如果您稍微配置一下,它可以完成您要求的所有功能。使用save函数配置它有点棘手,因为save函数不需要配置,但这并非不可能。可能导致问题的主要原因是您必须使用“保存并继续编辑”来访问和使用缩略图选项。如果自保存时创建后尚未创建,则在执行此操作之前,它将不可见

def save()
    found_id = self.id
        super(Team, self).save(*args, **kwargs)
        if self.image and found_id is None and self.original_image_width and self.original_image_height:
            self.image = get_thumbnailer(self.image).get_thumbnail({
                'size': (self.original_image_width, self.original_image_height)
            }).name
        super(Team, self).save(*args, **kwargs)
我希望这能对你有所帮助 在模型中,有两个字段“图像”和“缩略图”,在“视图”中,在验证图像类型和大小之后,使用Pill生成缩略图

from PIL import Image as Img
from io import BytesIO

def create(self,request):
    mutable = request.POST._mutable
    request.POST._mutable = True

    for value in request.FILES.items():
        im = Img.open(value[1])
        im.thumbnail((425, 236), Img.ANTIALIAS)
        buffer = BytesIO()
        im.save(fp=buffer, format='JPEG')

        requset.POST['thumbnail'] = ContentFile(buffer.getvalue(), thumnail_name)

     request.POST._mutable = mutable

要将图像保存在文件夹中并将缩略图保存到另一个文件夹中,您可以在ImageField中使用不同的上传路径

能否提供一个示例代码片段,说明如何配置保存功能,以及如何使用“保存并继续编辑”?谢谢。“保存并继续编辑”的基本功能是,保存功能将生成easy_缩略图URL,您可以为原始图像的宽度和高度以及缩略图创建相同的选项,还有一个图像上传器和一个用于在模型中存储缩略图的部分。你是如何解决你的问题的?@weisson我尝试了这三个应用程序,它们都不完美,而且过于固执己见(没有其他方法可以解决)。我正在对pica.js使用客户端缩略图。图像块直接上传到S3,不需要图像字段或枕头。现在是2020年,我也遇到了同样的问题。每次我必须添加图像到一个项目,我有一个坏的感觉,因为这一点。