Redimensionner un logo

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}
/*
 *   +----------------------------------+
 *    Nom du Filtre :    redimlogo
 *   +----------------------------------+
 *    Date : mercredi 16 avril 2003
 *    Auteur :  Roustoubi (roustoubi@tiscali.fr)
 *   +-------------------------------------+
 *    Fonctions de ce filtre :
 *    Renvoie les paramètres width & height pour réduire
 *    proportionnellement (si nécessaire) un logo dans un
 *    rectangle de dimensions données
 *    Les dimensions sont passées en paramètre du filtre
 *    (à partir de SPIP v.1.5a2)
 *    Exemple d'application :
 *    [<img src="IMG/(#LOGO_RUBRIQUE|fichier)"][(#LOGO_RUBRIQUE|fichier|texte_script|redimlogo{200,0})>]
 *   +-------------------------------------+ 
 *  
 * Pour toute suggestion, remarque, proposition d'ajout
 * reportez-vous au forum de l'article :
 * http://www.uzine.net/spip_contrib/article.php3?id_article=110
*/

function redimlogo ($image, $largeur_maxi=0, $hauteur_maxi=0) {
	$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 = "height=\"".$hauteur."\" width=\"".$largeur."\"";
		}
	}
	return $parametres;
}
// FIN du Filtre redimlogo 

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.

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

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

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom