Django Imagekit processing the original image

喜你入骨 提交于 2019-12-13 02:28:14

问题


With version 1.1 I don't understand how I can preprocess the original image (by JUST using imagekit)

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

Having a model like this:

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

How do I for instance resize the original image? This was possible in previous imagekits, however the documentation insinuates I need another modelfield?


回答1:


You can use ProcessedImageField:

from imagekit.models import ProcessedImageField

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

There is in-code documentation on this class, but it looks like it's not being picked up by readthedocs' autodoc module right now.

I reopened a bug to fix the documentation.




回答2:


Looking here: https://github.com/jdriscoll/django-imagekit/blob/master/imagekit/processors/resize.py it looks like the Fit class is what you're after.

Untested but I suspect it's something like:

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})



回答3:


Below will do what you are looking for. You can add other processors to the list of processors as well. The processors are run prior to saving the image.

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}
    )


来源:https://stackoverflow.com/questions/8927906/django-imagekit-processing-the-original-image

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!