Django-fr

Forum

#1 30-08-2012 00:44:06

julienb
Membre
Inscription : 30-08-2012
Messages : 2

[Résolu] Sorl-thumbnail et sous-classe

Bonjour à tous,

Mon premier message ici dont j'espère qu'il me permettra de trouver un moyen d'avancer.
Je cherche à créer un processeur d'image personnalisé en « subclassant » sorl-thumbnail, installé via pip dans mon projet.

Seulement, je n'ai pas le moindre début d'idée d'où écrire ce code.

Sur stackOverflow, j'ai trouvé ça : http://stackoverflow.com/questions/6151 … -thumbnail, qui propose une base de code pour étendre sorl-thumbnail.

you can implement custom processing by creating (by subclassing) an engine, setting THUMBNAIL_ENGINE and overriding the create() method.

For example, to add a processing option to generate rounded corners:

from sorl.thumbnail.engines.pil_engine import Engine

class RoundedCornerEngine(Engine):    
    def create(self, image, geometry, options):
        image = super(RoundedCornerEngine, self).create(image, geometry, options)
        image = self.cornerize(image, geometry, options)
        return image

    def cornerize(self, image, geometry, options):
        if 'cornerradius' in options:
            ...whatever...
        return image

and you'd call that in a template as (note the cornerradius option):

{% thumbnail my_image "300x150" format="PNG" cornerradius=10 as thumb %}
    <img class="thumb" src="{{ thumb.url }}">
{% endthumbnail %}

Où dois-je créer ce fichier ? Comment doit-il s'appeler ?
Et pour un peu plus tard, si vous avez déjà fait ce genre de choses (manipulation d'image via imageMagick ou PIL), où puis-je trouver quelques exemples pour me guider dans le remplacement de ce « …whatever… » ?

Merci d'avance de vos réponses.

Dernière modification par julienb (30-08-2012 09:38:24)

Hors ligne

#2 30-08-2012 01:15:49

David Thenon
Membre
Inscription : 11-08-2010
Messages : 156
Site Web

Re : [Résolu] Sorl-thumbnail et sous-classe

Salut,

> Où dois-je créer ce fichier ? Comment doit-il s'appeler ?
Tu le ranges/installe où tu veux du moment qu'il est disponible en tant que
module Python et ensuite il suffit de renseigner son chemin complet dans
settings.THUMBNAIL_ENGINE, par exemple :

THUMBNAIL_ENGINE = "mon.module.MaClasse"

Bref un simple chemin python standard qui se finit par la classe de ton
"engine" à utiliser.

Pour exemple, la définition par défaut de ce settings se trouve là :

https://github.com/sorl/sorl-
thumbnail/blob/master/sorl/thumbnail/conf/defaults.py#L24

sorl l'instancie ici :

https://github.com/sorl/sorl-
thumbnail/blob/master/sorl/thumbnail/default.py#L16

En utilisant cette petite fonction qui va loader le chemin complet vers la
Class ciblée :

https://github.com/sorl/sorl-
thumbnail/blob/master/sorl/thumbnail/helpers.py#L47

Hors ligne

#3 30-08-2012 09:37:50

julienb
Membre
Inscription : 30-08-2012
Messages : 2

Re : [Résolu] Sorl-thumbnail et sous-classe

OK. Grand merci.

Simple comme bonjour… J'ai toujours un peu de mal à me dire qu'on peut mettre ce genre de classe « n'importe où ».

Pour ceux qui passeraient par ici, le lien de deux exemples de processeurs personnalisés avec PIL :
https://gist.github.com/1647660 et https://gist.github.com/1920535

Hors ligne

Pied de page des forums