SPIP - Contrib

SPIP - Contrib

[ar] [en] [es] [fr] [it]

76 visiteurs en ce moment

fontsizeup fontsizedown
[28 commentaires]

Redimensionner les images d’un article à la volée.

samedi 15 janvier 2005, par BoOz, Cap

Toutes les versions de cet article : [English] [Español] [français] [italiano]

0 vote

Ce filtre permet de redimensionner à la volée les images ajoutées par un auteur dans le texte d’un article. Il est possible de spécifier la valeur maximale pour la largeur, la hauteur, ou bien pour les deux.

Présentation

Beaucoup de squelettes attendent des images d’une certaine taille pour s’afficher correctement. Cependant, tous les auteurs ne sont pas habitués à ajuster la taille des images manuellement. L’idée est donc d’assurer la cohérence de la taille des images en redimensionnant automatiquement à l’aide d’un filtre, toutes les images illustrant un article .

Comment utiliser ce filtre ?

Ce filtre est une version modifiée du filtre reduire_image.

Le filtre recoit deux arguments :
- La taille maximale de l’image (en pixel)
- L’axe le long duquel il faut redimensionner (x,y,both)

La syntaxe est : reduire_all_images{taille_max,direction}

Par exemple, pour limiter la taille des images à 500 pixels de large on utilise :

<BOUCLE_art(ARTICLES){id_article}>
[(#TEXTE|reduire_all_images{500,x})]
</BOUCLE_art>

Avec ce filtre, une image de 450x600 ne serait pas redimentionnée, mais une image de 600x600 le serait.

JPEG - 12.6 ko
Image originale
L’image est plus petite que la colonne et son texte de description n’est pas entièrement visible
JPEG - 9.9 ko
Image redimentionnée
L’image a été redimentionnée avec le filtre reduire_all_images{500,x}. Elle est maintenant complètement visible, ainsi que son texte de description

Comme pour tout filtre, le traitement n’est effectif que dans la partie publique. Vous ne pourrez donc pas visualiser l’effet dans la partie privée.

fonctionnement

Si la librairie GD est installée sur le serveur, un nouveau fichier image sera créé la première fois que vous appelez la page appelant le filtre. Cette image sera utilisée pour tous les appels ultérieurs des filtres.

Si la librairie GD n’est pas installée, le redimensionnement sera obtenu simplement en spécifiant les attributs de largeur (width) et de hauteur (height) sur le tag <img> généré pour le code html.

Cache

Les images redimensionnées sont sauvegardées dans un sous répertoire "resized" situé dans le sous répertoire de IMG correspondant à l’extension du fichier.
exemple : IMG/jpg/resized ou IMG/gif/resized

Elles ne sont calculées que la première fois que le filtre est appelé.

Le fichier de sauvegarde de l’image redimensionnée a un nom formé ainsi : size-axe-imagename.extension

Par exemple, un fichier image nommé image1.jpg redimensionné à 500 pixels selon l’axe des X sera sauvegardée dans le répertoire IMG/jpg avec le nom de fichier : 500-x-image1.jpg

maintenance automatique

Une opération de maintenance automatique a lieu après un certain délai. Cette durée est indiquée dans la variable $maint_delay en début de fichier et peut être changée. C’est une semaine par défaut.

$maint_delay = 3600*24*7;
// 7 jours de 24h de 3600 secondes

L’opération de maintenance consiste à faire le ménage et à effacer les fichiers inutilisés (un "garbage collector").

Ainsi, si vous modifiez les squelettes et les tailles des vignettes, ou que vous changez d’images originales, des images préallablement créées deviendront inutiles. La maintenance détectera qu’elles ne sont plus utilisée et les effacera automatiquement du répertoire resized.

Note : Si jamais une image redimensionnée est effacée de manière prématurée (parcequ’elle n’est presque jamais visualisée par exemple), alors elle sera recrée au besoin, donc rien de gênant.

Installation

Pour installer ce filtre, téléchargez l’archive attachée à l’article, décompressez le fichier mes_fonctions.php3 et ajoutez son contenu dans votre propre fichier mes_fonctions.php3 à la racine de votre site Spip. Si vous n’avez pas encore de fichier appellé mes_fonctions.php3 ajoutez simplement celui-ci.

Ce filtre est expérimental, vous êtes libre de me contacter (en italien ou anglais ;o) si vous rencontrez des soucis.

Zip - 2.3 ko
téléchargement
Copiez-coller le code du fichier mes_fonctions dans votre propre fichier mes fonctions
Retour en haut de la page

28 Messages de forum

Voir toute la discussion

Pages 1 | 2 | 3

  • Répondre à ce message

    17 août 2006 03:25 , par Ubu

    Bonjour,

    est-il possible d’appliquer ce filtre à des images en documents joints ?

  • Répondre à ce message

    26 janvier 2006 16:58 , par sbourdon

    Bonjour,

    Ceci est ma première tentative avec les filtres et les boucles...

    Donc, j’ai téléchargé et inclu le fichier mes_fonctions.php3 dans mon fichier déjà existant et l’ai envoyé sur le serveur.

    Maintenant, où dois-je ajouter la boucle afin d’activer ce filtre :

    (...) [(#TEXTE|reduire_all_images500,x)] (...)

    Aussi, dois-je modifier quelque chose à l’intérieur de mes_fonctions.php3 ou est-ce qu’il suffit de modifier la boucle précédente ?

    Je vous remercie de votre compréhension et de votre aide ! ;-)

  • Répondre à ce message

    30 novembre 2005 19:04 , par Cap

    Ecco la soluzione di JoseLuis :

    Merci beaucoup. Que filtro tan estupendo. Yo lo estoy utilizando sobre spip 1.8b2 y no me ha dado ningún problema hasta ahora.

    Quería que las imágenes tuvieran un enlace a la original para verla en grande al cliquear sobre la reducida y he modificado :

    [...]
    if ($imagetime<($last_maint_date+$maint_delay/2) and time()>($last_maint_date+$maint_delay/2)) touch($imagefile);

    return "<img src='$imagefile' name='$name' border='0' align='$align' alt='' hspace='$espace' vspace='$espace' class='spip_logos' />";
    [...]

    por :

    [...]
    if ($imagetime<($last_maint_date+$maint_delay/2) and time()>($last_maint_date+$maint_delay/2)) touch($imagefile);
           
    $enlace_original_ini = "<a href='IMG/$logo' title='$basename'>";
    $enlace_original_fin = "</a>";
     
    return $enlace_original_ini."<img src='$imagefile' name='$name' border='0' align='$align' alt='' hspace='$espace' vspace='$espace' class='spip_logos' />".$enlace_original_fin;
    [...]

    y me funciona bien.

    Un saludo y gracias.

    Ciao

    Cap

  • Répondre à ce message

    30 novembre 2005 14:34 , par gelinp

    Bonjour,

    Pour moi le script marche très bien, mais j’ai une demande concernant la possibilité de rendre clickable l’image afin de pouvoir la consulter dans une nouvelle page (pas une popup) en taille originalle.

    Si quelqu’un a déjà un patch je sui preneur.

    Cordialement.

  • Répondre à ce message

    14 août 2005 19:48 , par Ben

    Merci pour cet excellent filtre ! Pour l’appliquer à un logo (et, par extension, à un document attaché), utilisez la syntaxe suivante :

    [(#LOGO_SITE||reduire_all_images{200,x})]

    Les deux barres verticales (au lieu d’une habituellement) servent à ne pas affecter d’URL de lien au logo, comme il est expliqué ici : http://www.spip.net/fr_article901.html (partie "Filtres de logos").

  • Répondre à ce message

    24 juin 2005 12:51 , par skystan

    Bonjours,

    êtes-vous arrivé à modifier cette fonctionpour pouvoir redimensionner (en créant des vignettes) les logos ?

  • Répondre à ce message

    17 juin 2005 23:38 , par bruno

    Je suis tombé sur le problème suivant : Un article contenait plusieurs images dont le nom commençait par "25." Le filtre créait 350-x-25.jpg pour toutes les images. Donc la page affichait une seule image en plusieurs exemplaires (suis-je clair ?). J’ai fait cette modification à la ligne 98 :

          $nom = substr($basename, 0, strpos($basename, ".")) ;
    

    J’ai remplacé strpos par strrpos.


    —  Bruno
  • Répondre à ce message

    8 juin 2005 15:38 , par Cap

    I can’t find where you applied the filter. You have to write something like [(#TEXTE|reduire_all_images{500,x})}

  • Répondre à ce message

    8 juin 2005 14:24 , par JB

    j’ai bien fais toutes les modifications (modification du fichier mes_fonctions et installation de la librairie GD) mais le filtre ne marche pas. Je ne sais pas trop où mettre ce filtre. Voici ma boucle :

    Ce filtre marche-t-il sur des images déjà sur le site ? Un refresh suffit-il quand on fait des modifs sur le code ?

    Merci

  • Répondre à ce message

    22 mai 2005 22:16 , par remi

    You can find enclosed here (in french ;-) a post on the gmane.comp.web.spip.user newsgroup...

    Of course, spip contrib is the most interessed people...

    You can give me requested information directly by mail or using the newsgroup. Thanks.

    Avertissement :

    Je m’excuse pour la longueur de ce post. Un résumé permet au lecteur de voir immédiatement si il peut corresponde à l’un de ces centres d’intérêt.

    Résumé :

    ayant réalisé un script permettant la superposition d’image et de texte,par click sur une "miniature". Je compte le diffuser au sein de la communauté SPIP à le demande de plusieurs personnes. Pour une meilleur efficacité du travail à venir, je suis à la recheche de la formule optimale ( pouvant intéresser un maximum de personnes).

    Des exemples peuvent être vus sur le site

    http://paroissepb.free.fr/rubrique.... en cliquant sur l’une des images du bandeau supérieur

    Texte complet :

    J’ai réalisé, pour un site dont je m’occupe, un script permetant la surimpression "en live" (mais géré en cache pour une meilleur efficacité) de texte sur des images et utilise ce script dans SPIP. Sur le site en question ce script est utilisé pour affiché une image appartennant à un article les informations de cette image. Ce script est largement parametrable.

    Le fonctionnement actuel

    - l’image est une image incluse dans un article
    - Le texte intégré est composé de la description de l’image ET du titre de l’image identifiée comme signature.
    - Un copyright référençant le #NOM_SITE_SPIP est automatiquement ajouté
    - Si le titre de l’image commence par [xxx] alors xxx est identifié comme étant le propriétaire (de la photo) et le copyright l’indique.
    - Les textes sont ombrés pour une meilleure visibilité quelque soit la photo présentée
    - les informations suivantes sont parametrables : Fonte du texte Couleur du texte Taille du texte Couleur du texte Position vertcale du texte dans l’image ( en %) Position vetrticale du texte (en %) idem pour la signature Psiiton relative du texte et de a signature.

    - Les paramètres (ci dessus) sont pris dans le #DESCRIPTION de l’article qui contient les images
    - L’image présenté est recalculé pour rendre la taille de l’image transmise (relativement) indépendante de l’mage d’origine Les images textuée sont "cachées" dans le cahe spip /CACHE/*.* ce qui optimise le calcul des images textuées et permet une RAZ par un simple "vider le cache" de SPIP

    La proposition :

    après discussion au sein de SPIP-AIDE, il semble qu’un nombre important de spipiens soint intéressées pour qu’il existe un filtre SPIP ( mes_fonctions.php) qui réalise cette foncion, éventuellement completée par d’autres (redimensionnement,...).

    Avant de réaliser un tel filtre, il me semble important s’avoir un maximum d’avis sur ce que les gens désirent. J’ai à la date d’aujourd’hui repréré deux possibilités :

    1. prendre la fonction elle zxiste à l’eure actuelle et l’intégrer comme un filtre simple
    2. créer un filtre plus universel et dont les paramètres (textes et paramètres grapiques pourraient être fournies à l’appe du filtre dans le genre [(#DOCUMENT|imagetext(texte,titre,taille texte, fonte_texte,...))]. mais dans ce cas, j’ignore si elle pourrait être appelé en rempaçant texte et titre par #TEXTE et #TITRE.

    D’autre idées peuvent naturellement être envisagées, je fais confiance à votre imagination...

    La demande

    Merci de me faire savoir : si ous seriez interessé par un telle filtre si la proposition 1 ou 2 a votre préférence toute autre idée d’amélioration

    Voir en ligne : exemple :click over a picture at the top of the page...

Pages 1 | 2 | 3

Répondre à cet article

Retour en haut de la page

Ça discute par ici