diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3
index c21e9651656f3896fcbf07994dfd2f40ec323683..5752adb2c17437da935bcb9f3436bf059bb07063 100644
--- a/ecrire/inc_filtres.php3
+++ b/ecrire/inc_filtres.php3
@@ -521,6 +521,131 @@ function exposer ($id, $identique='on', $different='') {
 		return $different;
 }
 
+//
+// Reduire la taille d'un logo
+//
+
+function reduire_img($img, $taille = 120) {
+
+	if (strlen($img) > 0) {
+		// recuperer le nom du fichier
+		if (eregi("src=\'([^']+)\'", $img, $regs)) $logo = $regs[1];
+		if (eregi("align=\'([^']+)\'", $img, $regs)) $align = $regs[1];
+		if (eregi("name=\'([^']+)\'", $img, $regs)) $name = $regs[1];
+		if (eregi("hspace=\'([^']+)\'", $img, $regs)) $espace = $regs[1];
+
+		if (file_exists($logo)) {
+			$logo = substr($logo, 4, strlen($logo));
+			// recuperer nom de l'image et sa terminaison
+			$nom = substr($logo, 0, strpos($logo, "."));
+			$format = substr($logo, strlen($logo)-3, strlen($logo));
+		
+			// test de recalcul en fonction des dates des fichiers
+			// pour verifier si mise a jour plus recente du logo
+			if (file_exists("IMG/$taille-$nom.$format")) {
+				if (filemtime("IMG/$taille-$nom.$format") > filemtime("IMG/$logo")) {
+					return "<img src='IMG/$taille-$nom.$format' name='$name' border='0' align='$align' alt='' hspace='$espace' vspace='$espace' class='spip_logos' />";
+					$recalculer = false;
+				}
+				else {
+					$recalculer = true;
+				}
+			} else {
+				$recalculer = true;
+			}
+		
+			$gd_formats = lire_meta("gd_formats");
+			if ($recalculer AND ereg($format, $gd_formats)) {
+				// Recuperer l'image d'origine
+				if ($format == "jpg") {
+					$srcImage = ImageCreateFromJPEG("IMG/$logo");
+				}
+				else if ($format == "gif"){
+					$srcImage = ImageCreateFromGIF("IMG/$logo");
+				}
+				else if ($format == "png"){
+					$srcImage = ImageCreateFromPNG("IMG/$logo");
+				}
+				if (!$srcImage) return;
+
+				// Calculer le ratio
+				$srcWidth = ImageSX($srcImage);
+				$srcHeight = ImageSY($srcImage);
+			
+				if ($srcWidth > $taille OR $srcHeight > $taille) {
+					$ratioWidth = $srcWidth/$taille;
+					$ratioHeight = $srcHeight/$taille;
+				
+					if ($ratioWidth < $ratioHeight) {
+						$destWidth = floor($srcWidth/$ratioHeight);
+						$destHeight = $taille;
+					}
+					else {
+						$destWidth = $taille;
+						$destHeight = floor($srcHeight/$ratioWidth);
+					}
+				} else {
+					$destWidth = $srcWidth;
+					$destHeight = $srcHeight;
+				}
+				
+				// Initialisation de l'image destination
+				if ($GLOBALS['flag_ImageCreateTrueColor'] AND $destFormat != "gif")
+					$destImage = ImageCreateTrueColor($destWidth, $destHeight);
+				if (!$destImage)
+					$destImage = ImageCreate($destWidth, $destHeight);
+				// Recopie de l'image d'origine avec adaptation de la taille
+				$ok = false;
+				if ($GLOBALS['flag_ImageCopyResampled'])
+					$ok = ImageCopyResampled($destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);
+				if (!$ok)
+					$ok = ImageCopyResized($destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);
+			
+				// Sauvegarde de l'image destination
+				$destination = "IMG/$taille-$nom.$format";
+				if ($format == "jpg") {
+					ImageJPEG($destImage, $destination, 70);
+				}
+				else if ($format == "gif") {
+					ImageGIF($destImage, $destination);
+				}
+				else if ($format == "png") {
+					ImagePNG($destImage, $destination);
+				}
+				ImageDestroy($srcImage);
+				ImageDestroy($destImage);
+
+				return "<img src='$destination' name='$name' border='0' align='$align' alt='' hspace='$espace' vspace='$espace' class='spip_logos' />";
+			} else {
+				$taille_origine = @getimagesize("IMG/$logo");
+				if ($taille_origine) {
+					// Calculer le ratio
+					$srcWidth = $taille_origine[0];
+					$srcHeight = $taille_origine[1];
+				
+					if ($srcWidth > $taille OR $srcHeight > $taille) {
+						$ratioWidth = $srcWidth/$taille;
+						$ratioHeight = $srcHeight/$taille;
+					
+						if ($ratioWidth < $ratioHeight) {
+							$destWidth = floor($srcWidth/$ratioHeight);
+							$destHeight = $taille;
+						}
+						else {
+							$destWidth = $taille;
+							$destHeight = floor($srcHeight/$ratioWidth);
+						}
+					} else {
+						$destWidth = $srcWidth;
+						$destHeight = $srcHeight;
+					}
+					return "<img src='IMG/$logo' name='$name' width='$destWidth' height='$destHeight' border='0' align='$align' alt='' hspace='$espace' vspace='$espace' class='spip_logos' />";
+				}
+			}
+		}
+	}
+}
+
 
 //
 // Recuperation de donnees dans le champ extra