Django Imagekit 处理原始图像

1 投票
3 回答
3849 浏览
提问于 2025-04-17 10:37

在1.1版本中,我不太明白怎么用imagekit来处理原始图片。

https://github.com/jdriscoll/django-imagekit/blob/develop/README.rst

假设我有这样的一个模型:

class Photo(models.Model):
   original = models.ImageField(etcetera)
   thumbnail = ImageSpec(etcetera)

那我比如说怎么才能调整原始图片的大小呢?在之前的imagekit版本中是可以做到的,但现在的文档似乎暗示我需要另一个模型字段?

3 个回答

0

下面的内容可以满足你的需求。你还可以在处理器列表中添加其他处理器。这些处理器会在保存图片之前运行。

from imagekit.models import ProcessedImageField
from imagekit.processors import ResizeToFit

class Photo(models.Model):
    original = ProcessedImageField(
        upload_to='images/%Y%m',
        format=JPEG,
        processors=[ResizeToFit(200, 100)],
        options={'quality': 90}
    )
0

在这里查看:https://github.com/jdriscoll/django-imagekit/blob/master/imagekit/processors/resize.py,看起来你需要的就是 Fit 这个类。

虽然没有经过测试,但我猜它大概是这样的:

from django.db import models
from imagekit.models import ImageSpec
from imagekit.processors import resize

class Photo(models.Model):
    original_image = models.ImageField(upload_to='photos')
    thumbnail = ImageSpec([resize.Fit(50, 50)], image_field='original_image',
            format='JPEG', options={'quality': 90})
2

你可以使用 ProcessedImageField

from imagekit.models import ProcessedImageField

class Photo(models.Model):
    original = ProcessedImageField(etcetera)

这个类有一些代码内的说明,不过现在看起来这些说明没有被readthedocs的自动文档模块识别到。

我重新打开了一个bug,希望能修复这个文档问题。

撰写回答