SoreThumb - efektowne miniatury w Django

sorethumb to moduł Django pozwalający na generowanie miniatur grafik z nałożonymi różnymi efektami jak zaokrąglone rogi, przeźroczystość, zmiany kolorów itd. Moduł ten dodaje tag szablonów pozwalający w szablonie określić jaka miniatura ma być użyta i wygenerowana jeżeli jej jeszcze nie ma - zobacz przykłady.

Instalacja

Najprościej zainstalować można poprzez easy_install:
easy_install -U sorethumb
Jeżeli to nie zadziała to musimy ręcznie pobrać kod z SVN i zainstalować go poprzez
python setup.py install
Jako zależność musimy zainstalować aggdraw. Dla 32-bitowego Linuksa:
easy_install -U aggdraw
W przypadku dystrybucji 64-bitowych należy użyć aggdraw-64bits.

Konfiguracja sorethumb w projekcie Django

  • Do INSTALLED_APPS dodaj 'sorethumb',
  • Następnie w settings.py dodaj konfigurację:
    # bezwzględna ścieżka do katalogu na generowane miniatury
    SORETHUMB_OUTPUT_PATH = MEDIA_ROOT  + '/sorethumboutput/'
    # adres URL z którego te miniatury będą dostępne
    SORETHUMB_URL_ROOT = '/site_media/sorethumboutput'
    # ściężka do głównego katalogu ze statyką (grafikami). Struktura podkatalogów będzie powielona przez miniatury sorethumb
    SORETHUMB_IMAGE_ROOT = MEDIA_ROOT
    # ścieżka do grafiki wyświetlanej w przypadku braku podanego pliku
    SORETHUMB_DEFAULT_IMAGE = MEDIA_ROOT + '/none.png'
    
  • W szablonie, w którym chcesz użyć miniatur załaduj tag {% load sorethumb %}

Jak używać SoreThumb

Jak zaprezentowano w przykładach musimy np. w views.py danej aplikacji zdefiniować własne klasy nakładające różne efekty na miniaturę, np:
from sorethumb.djangothumbnail import DjangoThumbnail
from sorethumb.filters.defaultfilters import ThumbnailFilter
from sorethumb.filters.drawfilters import RoundedCornerFilter

class RoundedCornersEdged(DjangoThumbnail):
    format = 'jpg'
    name = 'small_thumb'
    filters = [ThumbnailFilter(180, 75), RoundedCornerFilter(10, border='#333'),
               ResizeCanvasFilter(180, 75, '#9BA61E'),
               OpaqueFilter('#9BA61E')]
Następnie w szablonie możemy załadować sorethumb i wykorzystać na grafice pochodzącej z danych przekazanych do szablonu, czy nawet podając ścieżkę do jakiejś grafiki:
<img src="{{ "/home/piotr/svn/0skala/biblioteka/site_media/resources/nauka.rk.edu.pl/images/ngc6894.jpg"|sorethumb:"small_thumb" }}" />
<img src="{{ object.user_image|sorethumb:"small_thumb" }}" />
  
I gotowe. Zostanie wygenerowana i wyświetlona miniatura o zdefiniowanych w klasie parametrach. W tym przypadku z zaokrąglonymi rogami. Pełen opis efektów w dokumentacji.
RkBlog

Django, 28 June 2010

Comment article
Comment article RkBlog main page Search RSS Contact