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