Images temporaires, images permanentes et fichiers de contrôle

Lorsqu’une image « toto.png » est créée par un filtre, un fichier de contrôle « toto.png.src » lui est associé. Ce fichier contient les infos nécessaires à la re-création de l’image si nécessaire (image source, fonction et arguments appelés).

Une image qui possède un fichier de contrôle est considérée comme temporaire et peut être supprimée du process.

Une image qui ne possède pas de fichier de contrôle est une image gravée, permanente.

Lorsqu’une série de filtres contient au moins un filtre image, le compilateur la termine par le filtre image_graver.

Dans un enchaînement de filtres, si une image intermédiaire est absente mais son fichier de contrôle présent, on ne fait rien tant qu’on n’a pas besoin de créer explicitement l’image cible.

Dans la plupart des cas, la série de filtres se finit sur l’image cible, qui a été gravée par le filtre image_graver et dont le fichier est présent sur le disque.

Si par contre on a besoin de créer une nouvelle image sur la base d’une image intermédiaire absente, on remonte la chaîne des fichiers de contrôle pour recréer chaque image intermédiaire à partir de l’image source originale.

Le filtre image_graver supprime le fichier de contrôle de l’image cible, et remonte la chaîne des fichiers de contrôle pour supprimer les images temporaires (mais laisse les fichiers de contrôle permettant de les reconstruire).

Dans un double traitement du style :

[(#TEXTE|image_reduire{520,0}
         |image_reduire{150}
         |image_rotation{90}
         |image_recadre{200,200,'center','red'}
         |image_aplatir{jpg}
)]
[(#TEXTE|image_reduire{520,0}
         |image_reduire{150}
         |image_rotation{-90}
         |image_recadre{200,200,'center','red'}
         |image_aplatir{jpg}
)]

La première série de filtres conduit à la création d’une image jpg et toutes les images intermédiaires sont supprimées
Dans la deuxième série de filtres, les deux premiers filtres image_reduire ne font rien car les fichiers de contrôle sont là. Au moment de calculer le image_rotation, on s’aperçoit qu’il nous les faut. On reconstruit donc les deux images intermédiaires, et celle qui a manqué (la deuxième) est gravée car on sait qu’elle est commune à plusieurs séries.

Le gravage automatique de l’image intermédiaire évite un recalcul systématique pour cause de dates a chaque hit.

Une écriture optimisée serait bien entendu d’appliquer les filtres communs une seule fois et de stocker le résultat avec #SET.

Auteur cerdic, denisb Publié le : Mis à jour : 18/08/22