Actuellement, le redimensionnement des images à la demande est réalisé à l'affichage :
- des avatars des utilisateurs,
- des images de formulaires,
- des vignettes des publications dans une GED
Pour la réalisation du redimensionnement à chaud, deux objets ont été introduits :
- un tag de ViewGenerator pour l'affichage d'une image ; ce dernier s'occupe de mettre à jour l'URL de l'image avec les indications de taille demandée,
- un service d'accès au fichier de Silverpeas et au sein duquel le redimensionnement a lieu.
Le tag image
¶
Les informations de redimensionnement sont définis par défaut dans le fichier de propriétés properties/org/silverpeas/lookAndFeel/generalLook.properties. Elles sont sous la forme de propriétés dont la clé est préfixée par le terme image.size
. Exemple des avatars :
image.size.avatar = 60x
image.size.avatar.profil = x140
Les valeurs de ces propriétés sont sous la forme
WIDTHxHEIGHT
avec WIDTH la largeur en pixels de l'image et HEIGHT la hauteur en pixels de l'image. L'un des deux paramètres peut être omis. Seul le séparateur
x
est requis.
Tout ce qui suit le préfixe dans la clé définit le type de l'image et peut être passé au tag via l'attribut éponyme. Exemple :
<view:image src='/display/avatar/moi.jpg' type='avatar.profil'/>
Il est possible aussi d'indiquer explicitement la taille voulue de l'image via l'attribut
size
et sous le même format que les propriétés de taille (
WIDTHxHEIGHT
). Si les deux attributs,
type
et
size
, sont valorisés, l'attribut
size
prédomine sur celui
type
.
L'URL de l'image d'origine peut être passée comme telle au tag, ce dernier s'occupera de la formater correctement selon la taille mais aussi selon le contexte Web de l'application (il n'est pas nécessaire d'utiliser le tag <c:url .../> pour ce faire).
Le service d'accès au fichier dans Silverpeas¶
Des objets ont été introduits pour gérer définir un point d'accès unique au fichier dans Silverpeas pour l'IHM : SilverpeasFileProvider
. C'est un singleton qui retourne un objet SilverpeasFile
(une sous-classe de java.io.File
) avec des informations additionnelles sur le fichier. Ce dernier est destiné avant tout pour accéder un fichier existant dans Silverpeas. Pour les activités de gestion de fichier comme la copie, la suppression, etc. il est recommandé de continuer à utiliser java.io.File
. En effet, l'instance unique de SilverpeasFileProvider
déroule une chaîne de pré-processeurs sur le chemin du fichier demandé et une chaîne de post-processeurs sur le fichier récupéré. Ces derniers peuvent donc altérés le chemin mais aussi le fichier retourné.
Afin de pouvoir accomplir des traitements aux fichiers demandés de manière transparente,
SilvepreasFileProvider
supporte un système d'attache de pré et de post traitement. Un pré-traitement travaille sur le chemin d'un fichier passé en paramètre, tandis qu'un post-traitement travaille quant à lui sur le fichier récupéré et ceci avant que ce dernier soit passé à l'appelant par la seule instance de
SilverpeasFileProvider
. Pour ce faire, un traitement doit être représenté par une classe qui implémente l'interface
SilverpeasFileProcessor
. Actuellement, deux processeurs ont été définis :
ImageResizingProcessor
qui s'occupe de redimensionner une image à chaud, à partir des informations passés dans le chemin, si cette dernière n'existe pas dans la taille demandée,
FileExistenceCheckingProcessor
qui s'occupe de vérifier que le fichier à retourner existe bien, sinon une instance de SilverpeasFile.NO_FILE
est retournée.