Django Imageprocessor

Aplikacja umożliwiająca wsadowe przetwarzanie obrazu ze wsparciem dla cache i presetów (predefiniowanych procesów obróbki obrazu). Najczęściej używam do generowania miniatur oraz większych zdjęć z nałożonymi znakami wodnymi.

Popularne zastosowania

  • automatyczne generowanie miniatur
  • automatyczne generowanie statycznych, ale również przetworzonych obrazów (pomniejszonych, ze znakami wodnymi, etc)

Zalety

  • Cache: użycie pamięci podręcznej redukuje czas dostępu do przetworzonych obrazów (cache generowany jest dynamicznie na podstawie cech pliku źródłowego oraz zastosowanych filtrów)
  • Stałe adresy URL obrazów: pliki wynikowe są umieszczane zawsze na tej samej ścieżce, nawet po zmianie konfiguracji presetów
  • Szablony: dwa proste i łatwe w użyciu tagi do generowania miniatur oraz wyświetlania obrazów przetworzonych filtrami zdefiniowanymi we wskazanym presecie
  • API: proste, kompatybilne z filtrami i transformatami pakietu PIL
  • Baza danych nie jest wymagana (presety można zdefiniować w dowolnym miejscu, najlepiej podczas startu aplikacji)

Przykład użycia

__init__.py projektu/aplikacji

from imageprocessor.presets import create_preset
from imageprocessor import ImageProcessor
from PIL import Image

# instancja procesora z filtrem skalujacym do 800,600
# z zachowaniem aspect ratio oraz antialiasingiem

proc = ImageProcessor(quality=75)
proc.add_filter(Image.Image.thumbnail, (800,600),
    resample=Image.ANTIALIAS)

# utworzenie presetu (nazwa presetu ma charakter globalny)
create_preset('moj_preset', proc)

Szablon

{% load imageprocess %}
<img src="{{ MEDIA_URL }}/{% image_from_preset entry.image "moj_preset" %}" />