Imagine que temos um projeto onde o usuário, responsável por alimentar os conteúdos, não tem a mínima noção do tamanho da imagem necessária para não destruir o layout, e nenhum pouco de boa vontade para ler a especificação do tamanho no help_text?
Claro que sempre dá pra fazer o recorte automático com o sorl-thumbnail, mas e se o usuário quiser escolher como recortar a foto?
Bom, pra isso, apresento-lhes o impressionante : django-image-cropping.
Vejamos como utilizar:
1. Primeiramente, instale ele no seu virtualenv:
pip install django-image-cropping
2. Se não tiver o easy_thumbnails instalado, instale:
pip install easy_thumbnails
3. Adicione os dois no INSTALLED_APPS:
INSTALLED_APPS = [ ... 'easy_thumbnails', 'image_cropping', ... ]
4. Adicone também no settings.py:
from easy_thumbnails.conf import Settings as thumbnail_settings THUMBNAIL_PROCESSORS = ( 'image_cropping.thumbnail_processors.crop_corners', ) + thumbnail_settings.THUMBNAIL_PROCESSORS
5. No seu model que quiser a função de recorte no admin deixe como a seguir:
from image_cropping import ImageRatioField class SeuModel(models.Model): ... imagem = models.ImageField(upload_to="/caminho/para/upload/",) cropping = ImageRatioField('imagem', '900x900') ...
Mude a proporção do atributo cropping de acordo com sua necessidade.
6. No admin.py:
from django.contrib import admin from image_cropping import ImageCroppingMixin class SeuModelAdmin(ImageCroppingMixin, admin.ModelAdmin): pass admin.site.register(SeuModel, SeuModelAdmin)
7. No template que for exibir a foto recortada utilize a tag provida pelo plugin:
{% cropped_thumbnail instancia_do_seu_model "cropping" [scale=INT|width=INT|height=INT|max_size="INTxINT"] %}
EX:
<img cropping="" scale="0.5" src="{% cropped_thumbnail instancia_do_seu_model " />
8. Dá inclusive para utilizar esse plugins para Inlines:
from image_cropping import ImageCroppingMixin class ImagemInline(ImageCroppingMixin, admin.TabularInline): model = Imagem extra = 0
Desta maneira, ao fazer o upload, o usuário poderá selecionar a área de recorte diretamente no admin, respeitando a proporção imposta no models.py e sem destruir o layout.
Fonte e mais informações: https://pypi.python.org/pypi/django-image-cropping
hasta!
Nenhum comentário:
Postar um comentário