SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 353 visiteurs en ce moment

Accueil > Affichage multimédia > Images > Traitement d’images > Filtres images pour avant SPIP 1.9 > Redimensionner un logo

Redimensionner un logo

19 avril 2003 – par roustoubi – 17 commentaires

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Ce filtre permet de réduire proportionnellement (si nécessaire) un logo dans un rectangle de dimensions données. Les dimensions en pixels sont passées en paramètre du filtre (à partir de SPIP 1.5a2) ce qui permet de réutiliser le même filtre à volonté.

ACTUALITE : depuis SPIP 1.8 on peut se servir du filtre standard image_reduire : |image_reduire{largeur,hauteur}

Ce script est dérivé d’autres que j’ai pu voir sur différents sites de contrib, mais j’ai oublié lesquels (leurs auteurs voudront bien m’excuser ou se signaler). Je suis excessivement débutant en php donc les pros voudront bien me pardonner le code qui n’est peut-être pas optimisé mais qui fonctionne.

Attention cependant : ce filtre n’est qu’un garde-fou contre les explosions de maquettes. Le redimensionnement de l’image par le navigateur est de qualité très fluctuante, sans compter que l’image trop grande sera nécessairement plus lente à afficher. Le filtre ne dispense donc pas de reprendre a posteriori les images trop grandes pour les redimensionner et les optimiser dans un logiciel graphique.

Dernière modification de cette page le 24 juin 2011

Retour en haut de la page

Vos commentaires

  • Le 22 décembre 2004 à 15:18, par jeje En réponse à : > Redimensionner un logo

    Salut, j’ai optimisé ton filtre pour qu’il s’emploie plus naturellement, c’est à dire avec un appel de la forme :

    (#LOGO_ARTICLE|left|#URL_ARTICLE|redimlogo{40,40})

    Voici le nouveau code pour parvenir à ça :

    function redimlogo ($image, $largeur_maxi=0, $hauteur_maxi=0)
    {
            if ($largeur_maxi<=0 AND $hauteur_maxi<=0) {} // Pas de mise à l'échelle si négatif ou nul
            elseif ($image != "")
            { // Que si l'image existe !
                    preg_match('|[Ss][Rr][Cc][ \t\r\n]*=[ \t\r\n]*["\']?([\w_\-\./]+)|',$image,$nomimage);
                    $nomimage = $nomimage[1];
                    $dim_image = GetImageSize($nomimage);
                    $largeur_image = $dim_image[0];
                    $hauteur_image = $dim_image[1];

                    if ($largeur_image+$hauteur_image>0)
                    {
                            // Calcul des facteurs de réduction
                            $reduction_largeur = $largeur_maxi/$largeur_image;
                            $reduction_hauteur = $hauteur_maxi/$hauteur_image;
                            // Choix du "bon" facteur de réduction
                            if ($reduction_largeur<=0) { $reduction = min(1,$reduction_hauteur); }
                            elseif ($reduction_hauteur<=0) { $reduction = min(1,$reduction_largeur); }
                            else {$reduction = min(1, $reduction_hauteur, $reduction_largeur); }
                            // Calcul des paramètres à renvoyer
                            $largeur = ceil($largeur_image*$reduction);
                            $hauteur = ceil($hauteur_image*$reduction);

                            if ($largeur != $largeur_image || $hauteur != $hauteur_image)
                            {
                                    $parametres = " HEIGHT=$hauteur WIDTH=$largeur";
                                     // On enlève les paramètre de hauteur et largeur éventuellement déjà présents
                                    $image = preg_replace('/[Hh][Ee][Ii][Gg][Hh][Tt][ \t\r\n]*=[ \t\r\n]*["\']?[ \t\r\n]*\d+[ \t\r\n]*%?[ \t\r\n]*["\']?[ \t\r\n]*/','',$image);
                                    $image = preg_replace('/[Ww][Ii][Dd][Tt][Hh][ \t\r\n]*=[ \t\r\n]*["\']?[ \t\r\n]*\d+[ \t\r\n]*%?[ \t\r\n]*["\']?[ \t\r\n]*/','',$image);

                                    // On met les nouveaux paramètres
                                    $image = preg_replace('/<[Ii][Mm][Gg]/','<IMG'.$parametres,$image);
                            }
                    }
            }
            return $image;
    }
    • Le 4 septembre 2005 à 13:46, par ? En réponse à : > Redimensionner un logo

      Bonjour j’ai testé ton filtre ça marche. Mais il y a un problème au niveau de la hauteur. Lorsque je met les paramètres : [(#LOGO_ARTICLE|left|#URL_ARTICLE|redimlogo200,500)]
      et [(#LOGO_ARTICLE|left|#URL_ARTICLE|redimlogo200,200)] et même
      [(#LOGO_ARTICLE|left|#URL_ARTICLE|redimlogo200,0)] donnent les mêmes résultats.
      Alors que j’aimerais pouvoir changer à volonté la largeur et la hauteur. Merci de me repondre.

    Répondre à ce message

  • Le 23 février 2005 à 12:49, par johnny stakhanov En réponse à : > Redimensionner un logo

    Bonjour,

    Bravo, le script marche... mais sous firefox seulement, pas sous IE. Et malheureusement, certains visiteurs utilisent encore IE. Je peux désactiver la fonction pour IE mais y’a pas une autre solution ?

    • Le 3 août 2005 à 17:52, par manar En réponse à : > Redimensionner un logo

      Bonjour,
      je travaille avec IE, et j’ai testé le script avec ; ça marche bien. J’ai qd même effectué une petite modification, car qd je met le logo dans un div il prend tout l’espace :

      Dans l’exemple donnée(après Exemple d’application...)j’ai changé la position des « [ » comme suite :

      * Exemple d’application :
      * }}(#LOGO_RUBRIQUE}}" [(#LOGO_RUBRIQUE|fichier|texte_script|redimlogo{200,0}){{]}}>

    Répondre à ce message

  • Le 24 novembre 2004 à 08:11, par spipfactory En réponse à : > Redimensionner un logo

    je me bagarre avec ce filtre depuis un certain temps ;
    alors est ce la bonne syntaxe

    $events[$date][] = array(’link’ => ’#URL_ARTICLE’, ’title’ => ’(#TITRE’, ’logo’ => « #LOGO_ARTICLE_RUBRIQUE|redimlogo5,5) ») ;

    @+

    • Le 17 décembre 2004 à 23:26, par skystan En réponse à : > Redimensionner un logo

      Moi je me le suis adapté comme ceci ça rajoute le lien directement :

      function redimlogo ($image, $largeur_maxi, $hauteur_maxi)
      $image= « IMG/$image » ;
      if ($largeur_maxi<=0 AND $hauteur_maxi<=0) {} // Pas de mise à l’échelle si négatif ou nul
      elseif ($image != "IMG/") // Que si l’image existe !
      $dim_image = @GetImageSize($image) ;
      $largeur_image = $dim_image[0] ;
      $hauteur_image = $dim_image[1] ;
      if ($largeur_image+$hauteur_image>0)
      // Calcul des facteurs de réduction
      $reduction_largeur = $largeur_maxi/$largeur_image ;
      $reduction_hauteur = $hauteur_maxi/$hauteur_image ;
      // Choix du « bon » facteur de réduction
      if ($reduction_largeur<=0) $reduction = min(1,$reduction_hauteur) ;
      elseif ($reduction_hauteur<=0) $reduction = min(1,$reduction_largeur) ;
      else $reduction = min(1, $reduction_hauteur, $reduction_largeur) ;
      // Calcul des paramètres à renvoyer
      $largeur = ceil($largeur_image*$reduction) ;
      $hauteur = ceil($hauteur_image*$reduction) ;
      $parametres = "" ;


      return $parametres ;

      Et dans le fichier html :[(#LOGO_ARTICLE|fichier|texte_script|redimlogo150,150,1)]
      pour un logo d’article, évidement.

    • Le 17 décembre 2004 à 23:42, par skystan En réponse à : > Redimensionner un logo

      Merde, j’ai débloqué pour le message !!!

      V’la l’script :

      $parametres = "<a href='".$image."'><img src=\"".$image."\" height=\"".$hauteur."\" width=\"".$largeur."\"></a>";

      C’est juste la dernière ligne

      et dans le fichier html : [(#LOGO_ARTICLE|fichier|texte_script|redimlogo150,150,1)]

      Pour un logo d’article

    Répondre à ce message

  • Le 12 septembre 2004 à 18:17, par gab zéta En réponse à : > pb Redimensionner un logo

    bonjour, personne n’a de pb avec ce filtre ?
    parce que moi mon logo ne change pas de taille du tout.
    j’applique aussi le filtre pour redimensionner une image dans un article et celui-ci fonctionne...

    c’est bien comme ça ?
    [(#LOGO_ARTICLE|left|#URL_ARTICLE|redimlogo{50,0})]

    Répondre à ce message

  • Le 19 mai 2004 à 16:33, par François En réponse à : > Redimensionner un logo

    Même problèmle de mon coté. j’ai implémenté cette fonction. Cela ne fonctionne pas car mes images restent à leur taille d’origine. Par contre il les affiche ce qui est déjà cela ;-)

    Répondre à ce message

  • Le 3 février 2004 à 17:09, par dominique En réponse à : > Redimensionner un logo

    Bonjour, il ne faut pas oublier ta mise en garde :
    « Attention cependant : ce filtre n’est qu’un garde-fou contre les explosions de maquettes. Le redimensionnement de l’image par le navigateur est de qualité très fluctuante, sans compter que l’image trop grande sera nécessairement plus lente à afficher. Le filtre ne dispense donc pas de reprendre a posteriori les images trop grandes pour les redimensionner et les optimiser dans un logiciel graphique. »

    Aussi, pour éviter l’explosion d’un site lors de l’ajout d’une image trop grande par un rédacteur, vous pouvez aussi, dans les styles css, imposer des tailles maximum à vos balises « DIV » et ainsi, l’image sera tronquée, ce qui est préfèrable...

    Pour cela, il faut utiliser l’option : overflow : hidden ;

    Répondre à ce message

  • Le 30 juin 2003 à 23:28, par Chris En réponse à : > Redimensionner un logo

    Salut !

    J’ai essayé de combiner ton filtre avec celu permettant d’ombrer les logos et cela n’a pas fonctionné :-(. Quelqu’un sait-il pourquoi ? Mieux encore : quelqu’un a-t-il une solution ?

    Merci d’avance

    • Le 30 juin 2003 à 23:43, par roustoubi En réponse à : > Redimensionner un logo

      Salut Chris,

      en fait, ces deux filtres ne sont pas compatibles en tant que tel parce qu’ils ne renvoient pas la même chose.

      Si tu regardes le code de ce filtre, il ne fait que renvoyer au sein de la balise <img> la taille (hauteur et largeur) maxi à afficher pour ne pas dépasser le cadre que tu t’es fixé.

      En revanche, le filtre d’ombre automatique renvoie un tableau contenant l’image au centre avec autour les effets d’ombre.

      Donc tu ne peux pas appliquer successivement ces filtres puisque tu ne peux pas déduire un tableau des deux dimensions que renvoie mon filtre, et inversement ces deux dimensions ne permettent pas de redimensionner le tableau que renvoie le filtre d’ombre.

      La seule solution serait de combiner l’esprit de ces deux filtres en reprogrammant un troisième filtre où le tableau d’ombres tienne compte des dimensions calculées comme dans ce filtre.

    • Le 11 juillet 2003 à 22:27, par Chris En réponse à : > Redimensionner un logo

      Salut Roustoubi !

      Merci pour ton explication, c’est très clair, mais c’est dommage que ces deux filtres ne soient pas compatibles car je pense réellement que cela serait utile. Je ne suis pas programmeur php et je suis vite dépassé par la programmation mais j’essayerais peut-être de faire un filtre qui combine ses deux filtres à mes heures perdues. Mais si une bonne âme veux s’y coller je serais ravi de jouer le testeur ;-)

      Au plaisir Roustoubi !

    • Le 7 décembre 2003 à 10:45, par asso.bachant En réponse à : > Redimensionner un logo

      a quel endroit doit t’on définir la taille de l’image est ce ici

    • Le 7 décembre 2003 à 11:37, par Roustoubi En réponse à : > Redimensionner un logo

      C’est dans le squelette, au niveau de |redimlogo{200,0}) (les valeurs 200 et 0 sont à remplacer selon tes souhaits).

      Il n’y a rien à modifier dans le filtre lui même.

    • Le 8 décembre 2003 à 20:29, par asso.bachant En réponse à : > Redimensionner un logo

      ça fonctionne, mais bizarrement je n’ai pas de redimensionnement de logo................

      suis je bête, encore faudrait t’il pouvoir mettre un logo ...........

      va falloir que je regarde mes squelettes d’un peu plus prés

    • Le 2 février 2004 à 02:02, par goce En réponse à : > Redimensionner un logo

      et comment arrive-ton jusqu’au squelette ? c’est quel fichier ?
      est-ce que le filtre doit etre ajouté dans le fichier mes_options.php3 ou mes_fonctions.php3 ?
      si c’est mes_fonctions , comment faire pour créer le fichier ?
      desolé pour ce flux de questions, mais je suis complètement débutant en spip

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Formulaire de contact libre

    27 avril 2011 – 107 commentaires

    Dans SPIP il n’y a pas un formulaire de contact, mais autant de formulaires de contact que d’auteurs. Cette phrase de Romy, dans son article Une page de contact dans mon SPIP, pointe un petit manque de SPIP. La possibilité d’insérer rapidement (...)

  • Sélections éditoriales

    19 mars 2015 – 54 commentaires

    Faites des listes de choses intéressantes. Ce plugin permet de gérer des listes de contenus quelconques de manière éditoriale. Chaque sélection est donc entièrement libre, et peut renvoyer aussi bien vers des contenus internes au SPIP quels qu’ils (...)

  • Court-circuit 2

    17 octobre 2011 – 63 commentaires

    Court-circuit 2 permet de rediriger certaines rubriques vers un article particulier. Vous pouvez configurer, dans l’espace privé, les règles de redirection à appliquer. Historique Court-circuit 2 est une évolution de Court-circuit 1, reprenant (...)

  • Formidable, le générateur de formulaires

    23 janvier 2012 – 2062 commentaires

    Un générateur de formulaires facilement configurable pour les non-informaticiens et facilement extensible pour les développeurs. Introduction L’objectif était de créer un plugin permettant de générer des formulaires. Historiquement, 2 plugins (...)

  • Réservation d’événements

    16 mars 2015 – 209 commentaires

    Ce plugin permet d’offrir aux visiteurs de s’inscrire pour un évènement du plugin Agenda et de gérer les réservations enregistrées. Installation Le plugin s’installe comme n’importe quel plugin. il nécessite : Agenda API de vérification (...)