Raccourcis : Contenu - rubriques - sous rubriques
EN FR

La classe jImageModifier permet de transformer une image et stocker le résultat en cache. En fonction de l'image originale, le système créera un répertoire pour mettre l'image finale en cache dans le répertoire www/. Vous devez avoir l'extension gd de PHP activée.

Les formats pris en charge sont:

  • gif -> image/gif
  • jpeg -> image/jpeg
  • jpg -> image/jpeg
  • jpe -> image/jpeg
  • xpm -> image/x-xpixmap
  • xbm -> image/x-xbitmap
  • wbmp -> image/vnd.wap.wbmp
  • png -> image/png
  • other -> image/png

  $params = array('width'=>500);
  $att = jImageModifier::get('MonImage.jpg', $params, true);

Le premier argument est le fichier de l'image originale. Le chemin indiqué doit être relatif au répertoire www/ de l'application.

Le deuxième argument est une série de paramètres de transformation. En voici une liste :

  • width : largeur de la nouvelle image
  • height : hauteur de la nouvelle image
  • maxwidth : largeur maximum de la nouvelle image
  • maxheight : hauteur maximum de la nouvelle image
  • quality : qualité de la nouvelle image, si c'est du jpeg. valeur de 0 à 100
  • background : couleur de fond quand il y a des parties vides sur la nouvelle image.
  • shadow : true si on veut une ombre portée. Les paramètres supplémentaires sont alors possibles :
    • soffset : nombre de pixel de décalage
    • sangle : angle de l'ombre
    • sblur : valeur du flou
    • sopacity : opacité de l'ombre
    • scolor #000000 : couleur de l'ombre.

Note : préférez l'utilisation du style CSS3 box-shadow si vous le pouvez, cela aura un meilleur résultat et ce sera plus performant.

Si on indique width ou height, les paramètres suivants peuvent s'appliquer :

  • zoom : valeur de zoom de 1 à 100.
  • omo : true si la proportion de la hauteur par rapport à la largeur doit être gardée
  • alignh : indique l'alignement de l'image en hauteur sur la nouvelle image si il y a de la place. "left", "center", "right", ou un entier.
  • alignv : indique l'alignement de l'image en largeur sur la nouvelle image si il y a de la place. "top", "center", "bottom", ou un entier.

Vous pouvez aussi indiquer en paramètre des attributs HTML ('alt', 'class', 'id', 'style', 'longdesc', 'name', 'ismap', 'usemap', 'title', 'dir', 'lang', 'onclick', 'ondblclick', 'onmousedown','onmouseup', 'onmouseover', 'onmousemove', 'onmouseout', 'onkeypress', 'onkeydown', 'onkeyup'). Ils seront simplement renvoyé (voir modifié pour l'attribut style).

Pour des exemples de transformation, voyez l'utilisation du plugin image.

L'image résultante est une image gif, jpeg ou png.

En résultat, vous récupérez un tableau d'attributs HTML que vous pourrez utiliser dans une balise HTML <img> par exemple. Vous aurez notament l'attribut src qui indique l'url de la nouvelle image. Si le troisième paramètre de la méthode est true, vous aurez aussi un attribut spécial, "cache_path", qui vous indique le chemin sur le disque vers l'image.


$maSource = $att['src']; //Chemin accessible en web
$monStyle = $att['style'];
$monCache = $att['cache_path']; // si le dernier paramètre est à true (àa permet d'avoir le chemin du fichier en cache), chemin absolu sur le disque

Jusqu'à Jelix 1.2.2, l'image originale devait se trouver dans le répertoire www/, et l'image résultante se trouvait dans www/cache/images/. Depuis Jelix 1.2.3, ces images peuvent se trouver ailleurs. Cela peut être utile si vous avez une application backoffice qui veut lire/stocker les images dans une autre appli (front). Pour ce faire, vous devez ajouter dans la configuration une nouvelle section "imagemodifier".


[imagemodifier]
src_url=
src_path=
cache_url=
cache_path=
  • src_url et src_path indiquent respectivement l'url et le chemin sur le disque, du repertoire où se trouve l'image d'origine. Par défaut, le répertoire est le www/ de l'application
  • cache_url et cache_path indiquent respectivement l'url et le chemin sur le disque, du répertoire où sera stocké l'image générée. Par défaut, il s'agit respectivement basepath + 'cache/images/', et www/cache/images.

Vous pouvez indiquer ces valeurs dans un tableau en 4ième paramètre de jImageModifier::get pour spécifier d'autres répertoires.