diff --git a/filtres/images_lib.php b/filtres/images_lib.php
index b53d13fbbfbd97975b17547f749935f97ebf341a..0bfb11f23cf38b6db640bbe531a3ad1b00ec2bb1 100644
--- a/filtres/images_lib.php
+++ b/filtres/images_lib.php
@@ -290,6 +290,7 @@ function _couleur_hsl2rgb($H, $S, $L) {
 // renvoit sous la forme hexadecimale ("F26C4E" par exemple).
 // Par defaut, la couleur choisie se trouve un peu au-dessus du centre de l'image.
 // On peut forcer un point en fixant $x et $y, entre 0 et 20.
+// si on passe 'moyenne' pour x alors une couleur moyenne est calculee sur les 20x20px
 // https://code.spip.net/@image_couleur_extraire
 
 function _image_couleur_extraire($img, $x = 10, $y = 6) {
@@ -333,17 +334,54 @@ function _image_couleur_extraire($img, $x = 10, $y = 6) {
 
 			imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
 
-			do {
-				// get a color
-				$color_index = imagecolorat($thumb, $x, $y);
-
-				// make it human readable
-				$color_tran = imagecolorsforindex($thumb, $color_index);
-				$x++;
-				$y++;
-			} while ($color_tran['alpha'] == 127 and $x < $newwidth and $y < $newheight);
+			if ($x === 'moyenne') {
+				$moyenne = null;
+				$nb_points = 0;
+				for ($x=0;$x<$newwidth;$x++) {
+					for ($y=0;$y<$newheight;$y++) {
+						// get a color
+						$color_index = imagecolorat($thumb, $x, $y);
+						// make it human readable
+						$color_tran = imagecolorsforindex($thumb, $color_index);
+						if ($color_tran['alpha'] != 127) {
+							if (is_null($moyenne)) {
+								$moyenne = $color_tran;
+							}
+							else {
+								$moyenne['red'] += $color_tran['red'];
+								$moyenne['green'] += $color_tran['green'];
+								$moyenne['blue'] += $color_tran['blue'];
+							}
+							$nb_points++;
+						}
+					}
+				}
+				if (is_null($moyenne)) {
+					$couleur = $defaut;
+				}
+				else {
+					if ($nb_points > 1) {
+						$moyenne['red'] = round($moyenne['red'] / $nb_points);
+						$moyenne['green'] = round($moyenne['green'] / $nb_points);
+						$moyenne['blue'] = round($moyenne['blue'] / $nb_points);
+					}
 
-			$couleur = _couleur_dec_to_hex($color_tran["red"], $color_tran["green"], $color_tran["blue"]);
+					$couleur = _couleur_dec_to_hex($moyenne["red"], $moyenne["green"], $moyenne["blue"]);
+				}
+			}
+			else {
+				do {
+					// get a color
+					$color_index = imagecolorat($thumb, $x, $y);
+
+					// make it human readable
+					$color_tran = imagecolorsforindex($thumb, $color_index);
+					$x++;
+					$y++;
+				} while ($color_tran['alpha'] == 127 and $x < $newwidth and $y < $newheight);
+
+				$couleur = _couleur_dec_to_hex($color_tran["red"], $color_tran["green"], $color_tran["blue"]);
+			}
 		} else {
 			$couleur = $defaut;
 		}
diff --git a/paquet.xml b/paquet.xml
index b998953fab6567491ad2470572d69d536a1ea314..60c341fb1bc947938159a213e1c8312ea5548612 100644
--- a/paquet.xml
+++ b/paquet.xml
@@ -1,7 +1,7 @@
 <paquet
 	prefix="images"
 	categorie="multimedia"
-	version="2.1.1"
+	version="2.1.2"
 	etat="stable"
 	compatibilite="[3.3.0-dev;3.3.*]"
 	logo="images/image_filtre-32.png"