Cropper et redimensionner des images dans un template de ParoiCMS

Avec ParoiCMS, le code d'un template peut librement recadrer et redimensionner les images de l'utilisateur. Pour cela, on utilise le tag useImage. Par exemple :

{% useImage img1 uid: doc.featuredImage.uid size: "200x50" %}

Explications :

Inspectons le résultat :

{{ img1 | info }}

Avec un pixel ratio de 1.5, cela produit une image de 300 par 75 pixels physiques, destinée à être affichée sur 200 par 50 pixels logiques.

À propos du pixel ratio, voir aussi la documentation : Définir le pixel ratio du ParoiCMS

Voici comment créer une balise <img> avec notre variable img1 :

<img
  src="{{ img1.url }}"
  width="{{ img1.width }}"
  height="{{ img1.height }}"
  alt=""
  loading="lazy">

Et si on relance avec une taille "50x200", on obtient :

Il est également possible de laisser une dimension libre. Par exemple, la taille "200x" créera une image de 200 pixels logiques de largeur avec une hauteur calculée pour conserver le ratio de l'image originale. Par exemple, si l'utilisateur upload depuis le back-office une image carrée de 1000 pixels sur 1000 pixels, le résultat sera aussi une image carrée avec une largeur de 200 pixels logiques (donc 300 pixels physiques après application du pixel ratio).

Il existe enfin une syntaxe pour définir la dimension la plus grande et calculer la plus petite : ainsi, la taille x100x garantit que, quelle que soit l'image donnée par l'utilisateur, la largeur ou la hauteur ne peut excéder 100 pixels. L'autre dimension sera calculée pour respecter le ratio de l'image originale.

Récapitulons les syntaxes des tailles d'images :

Les images originales sont stockées dans la base des médias. Les images produites par useImage sont quant à elles stockées dans le fichier de cache des images. Elles sont générées à la demande, au moment où le template s'exécute. Elles sont périssables et peuvent être régénérées.