SPIP-Contrib

SPIP-Contrib

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

286 Plugins, 197 contribs sur SPIP-Zone, 220 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 ?
  • [Se connecter]

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

  • Champs Extras 3

    16 janvier 2012 – 524 commentaires

    Ce plugin permet de créer et/ou de gérer des champs supplémentaires dans les objets éditoriaux de SPIP. Il permet donc de prendre en compte et d’afficher de nouveaux éléments dans n’importe quel objet éditorial de SPIP. Screencast Vous n’aimez pas (...)

  • Réservation d’événements

    16 mars 2015 – 188 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 (...)

  • Les crayons

    23 avril 2008 – 815 commentaires

    Ce plugin permet d’éditer les contenus sur les pages publiques du site, sans passer par l’espace privé de SPIP.

  • LESS pour SPIP : Less-CSS (anciennement LESSpip)

    5 novembre 2010 – 43 commentaires

    Less-CSS (Anciennement LESSpip) est un plugin intégrant facilement le logiciel LESS dans SPIP. LESS est une extension de CSS ajoutant les variables, les classes, les opérations, les imbrications au langage. Facilitant ainsi l’écriture de (...)

  • Recommander

    3 avril 2011 – 16 commentaires

    Ce plugin propose une manière simple de suggérer de recommander par email un article à un ami. Fonction « recommander un article à un ami ». On l’ajoute dans n’importe quel squelette sous la forme : #RECOMMANDERtitre de la page,url de la page,intro (...)

Ça spipe par là