Drupal 7 : Création de styles d’images dans un module

Depuis la version 7 de Drupal, le module image est intégré au core. Cela permet de créer simplement des styles d'images.
Les styles d'images permettent d'effectuer automatiquement des
opérations sur les images avant de les afficher. Les images générées
sont enregistrées afin de ne pas effectuer systématiquement la
transformation. Le module se charge de déterminer s'il faut générer une
nouvelle image ou bien utiliser celle générée précédemment.

Définition d'un style

Les styles d'images doivent être définis par un tableau associatif dans le hook hook_image_default_styles(). Pour un style d'image on peut définir autant de d'effets que l'on veut. L'ordre des effets est déterminé par l'entrée weight. Vous trouverez la liste des styles du module image dans le fichier image.effects.inc du module image.

Voici par exemple la définition d'un style nommé "Mon Style" qui redimensionne l'image, puis la met en noir en blanc.

$styles['mon_style'] = array(
  'name' => 'Mon Style',
  'effects' => array(
    array(
      'name' => 'image_scale_and_crop',
      'data' => array(
        'width' => '105',
        'height' => '120',
      ),
      'weight' => '1',
    ),
    array(
      'name' => 'image_desaturate',
      'weight' => '2',
    ),
  ),
);

Lorsque ce style sera appliqué à une image elle sera redimensionnée (105x120), puis mise en noir et blanc. Si le style ne se trouve pas dans le module image on peut préciser où il se trouve en ajoutant une entrée 'module' dans la définition de l'effet.

Utilisation du style

On peut utiliser le style d'image depuis l'interface d'administration, mais on peut aussi l'utiliser dans un module. Pour l'utiliser il faut passer par la fonction de thème 'image_style'. On peut préciser un titre et un texte alternatif avec respectivement l'entrée 'title' et 'alt'.
Voici comment utiliser le style :

$uri = file_build_uri( $path );
theme( 'image_style', array(
  'path' =>  $uri,
  'style_name' => 'mon_style' )
);

$path étant le chemin vers l'image dans l'arborescence de Drupal.

Pour aller plus loin vous pouvez regarder dans le code de image.effects.inc pour savoir comment créer vos propres effets.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.