- ^ Références
- ^ Les classes utilitaires
- jApp : chemins de l'application
- jDateTime : manipulation de dates et heures
- jFile : lire ou créer des fichiers
- jFilter : vérification et filtrage de données
- jHttp : faire des requête HTTP
- jImageModifier: Modifier une image
- jIniFileModifier: lire ou modifier des fichiers de configuration (ini)
- jMailer : envoi de mails
- jMessage : informations entre actions
- jPref : gérer vos préferences d'applications
- jSession : stockage de sessions
- jWiki : transformation de texte wiki
Section: jImageModifier: Modifier une image
« jHttp : faire des requête HTTP | ^ Les classes utilitaires | jIniFileModifier: lire ou modifier des fichiers de configuration (ini) » |
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.