From 58f489e1709c4fe3b99287d2fba70f8c6c5c40e1 Mon Sep 17 00:00:00 2001
From: ARNO* <arno@rezo.net>
Date: Mon, 4 Oct 2004 17:30:55 +0000
Subject: [PATCH] Nouvelle methode de resize: djpeg | pnmscale | cjpeg

---
 ecrire/config-fonctions.php3 |  9 +++++++++
 ecrire/inc_logos.php3        | 11 +++++++++--
 ecrire/inc_version.php3      |  4 ++++
 spip_image.php3              |  2 +-
 4 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/ecrire/config-fonctions.php3 b/ecrire/config-fonctions.php3
index c5e66a61d9..0fcbb2e282 100644
--- a/ecrire/config-fonctions.php3
+++ b/ecrire/config-fonctions.php3
@@ -85,6 +85,9 @@ else {
 				case 'gd2':
 					$formats_graphiques = lire_meta('gd_formats');
 					break;
+				case 'netpbm':
+					$formats_graphiques = 'jpg';
+					break;
 				case 'convert':
 					$formats_graphiques = 'gif,jpg,png';
 					break;
@@ -109,10 +112,16 @@ else {
 				}
 			}
 
+			afficher_choix_vignette($p = 'netpbm');
+			$nb_process ++;
+
+
 			if ($convert_command) {
 				afficher_choix_vignette($p = 'convert');
 				$nb_process ++;
 			}
+			
+			
 
 			echo "</tr></table>\n";
 	
diff --git a/ecrire/inc_logos.php3 b/ecrire/inc_logos.php3
index a4b96b052c..5ae33750f3 100644
--- a/ecrire/inc_logos.php3
+++ b/ecrire/inc_logos.php3
@@ -194,7 +194,7 @@ function image_ratio ($srcWidth, $srcHeight, $maxWidth, $maxHeight) {
 }
 
 function creer_vignette($image, $maxWidth, $maxHeight, $format, $destination, $process='AUTO', $force=false) {
-	global $convert_command;
+	global $convert_command, $djpeg_command, $cjpeg_command, $pnmscale_command;
 
 	// ordre de preference des formats graphiques pour creer les vignettes
 	// le premier format disponible, selon la methode demandee, est utilise
@@ -257,7 +257,14 @@ function creer_vignette($image, $maxWidth, $maxHeight, $format, $destination, $p
 			imagick_write($handle, $vignette);
 			if (!@file_exists($vignette)) return;	// echec imagick
 		}
-		else
+		if ($process == "netpbm") {
+			if ($format == "jpg") {
+				$vignette = $destination.".".$format;
+				exec("$djpeg_command $image | $pnmscale_command -width $destWidth | $cjpeg_command -outfile $vignette");
+				if (!@file_exists($vignette))
+					return;	// echec commande
+			}
+		}
 		// gd ou gd2
 		if ($process == 'gd1' OR $process == 'gd2') {
 
diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3
index 8f9c26d89c..1677af81b5 100644
--- a/ecrire/inc_version.php3
+++ b/ecrire/inc_version.php3
@@ -126,6 +126,10 @@ $type_urls = 'standard';
 // le chemin complet '/bin/convert' (Linux) ou '/sw/bin/convert' (fink/Mac OS X)
 // Note : preferer GD2 ou le module php imagick s'ils sont disponibles
 $convert_command = 'convert';
+// creation des vignettes avec djpeg/pnmscale/cjpeg
+$djpeg_command = 'djpeg';
+$cjpeg_command = 'cjpeg';
+$pnmscale_command = 'pnmscale';
 
 // faut-il passer les connexions MySQL en mode debug ?
 $mysql_debug = false;
diff --git a/spip_image.php3 b/spip_image.php3
index 8792888f27..df8bd6bb54 100644
--- a/spip_image.php3
+++ b/spip_image.php3
@@ -78,7 +78,7 @@ function tester_vignette ($test_vignette) {
 	}
 
 	// et maintenant envoyer la vignette de tests
-	if (ereg("^(gd1|gd2|imagick|convert)$", $test_vignette)) {
+	if (ereg("^(gd1|gd2|imagick|convert|netpbm)$", $test_vignette)) {
 		include_ecrire('inc_logos.php3');
 		$taille_preview = lire_meta("taille_preview");
 		if ($taille_preview < 10) $taille_preview = 120;
-- 
GitLab