Как обрезать изображение, выбранное с помощью django-filer в django admin
Я использую django-filer для управления изображениями. Как я могу обрезать и изображение после выбора одного для FilerImageField?
1 ответ
Вот фрагмент, который объединяет django-filer и django-image-cropping. Просто используйте CroppableFilerImageField
вместо FilerImageField
ваши модели.
Обратите внимание, что вы все равно должны нажать "Сохранить и продолжить редактирование" после выбора изображения, чтобы иметь возможность обрезать.
from django.conf import settings
from filer import settings as filer_settings
from filer.fields.image import (
AdminImageWidget, AdminImageFormField, FilerImageField,
)
from filer.models import File
class CroppableImageWidget(AdminImageWidget):
def render(self, name, value, attrs=None):
if value:
file_obj = File.objects.get(pk=value)
attrs = attrs or {}
attrs.update({
'class': 'crop-thumb',
'data-thumbnail-url':
file_obj.thumbnails['admin_sidebar_preview'],
'data-field-name': name,
'data-org-width': file_obj.width,
'data-org-height': file_obj.height,
})
return super().render(name, value, attrs)
class Media:
js = (
filer_settings.FILER_STATICMEDIA_PREFIX + 'js/popup_handling.js',
getattr(settings, 'JQUERY_URL',
'https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js'),
"image_cropping/js/jquery.Jcrop.min.js",
"image_cropping/image_cropping.js",
)
css = {'all': ("image_cropping/css/jquery.Jcrop.min.css",)}
class CroppableFormField(AdminImageFormField):
widget = CroppableImageWidget
class CroppableFilerImageField(FilerImageField):
default_form_class = CroppableFormField