diff --git a/.gitattributes b/.gitattributes index 59667effc3e1b99fb6e3d49bf6e6f1b53e07bb47..b3272cdf1f24f69bd2db99da88daa515c7b620b6 100644 --- a/.gitattributes +++ b/.gitattributes @@ -66,6 +66,7 @@ IMG/icones_barre/quote.png -text IMG/test.gif -text IMG/test.jpg -text IMG/test.png -text +IMG/test_image.jpg -text NAVPICS/petit-logo-spip.gif -text NAVPICS/point.gif -text NAVPICS/rien.gif -text diff --git a/IMG/test_image.jpg b/IMG/test_image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a6916fb5cb2e087a769e1615cf2a75b082b8e9c4 Binary files /dev/null and b/IMG/test_image.jpg differ diff --git a/ecrire/config-fonctions.php3 b/ecrire/config-fonctions.php3 index 6aaa077f4ce4b8f6bf85c942ae58ad2b702d79d8..ccdaf43d4c856040f19debc75a349a58bdc54c83 100644 --- a/ecrire/config-fonctions.php3 +++ b/ecrire/config-fonctions.php3 @@ -19,7 +19,7 @@ if ($connect_statut != '0minirezo' OR !$connect_toutes_rubriques) { } init_config(); -if ($changer_config == 'oui') { +if ($changer_config == 'oui' OR $image_process) { appliquer_modifs_config(); } @@ -32,12 +32,30 @@ echo "<input type='hidden' name='changer_config' value='oui'>"; // // Activer/desactiver la creation automatique de vignettes // -if ($flag_gd) { + + + +function afficher_choix_vignette($process) { + global $taille_preview; + + if ($process == lire_meta('image_process')) + $border = 2; + else + $border=0; + + echo "<td><div align='center' valign='bottom' width='".($taille_preview+5)."'><a href='config-fonctions.php3?image_process=$process'><img src='../spip_image.php3?test_vignette=$process' border='$border' /></a><br />"; + if ($border) echo "<b>$process</b>"; + else echo "$process"; + echo "</div></td>\n"; +} + +if ($flag_gd OR $flag_imagick OR $convert_command) { debut_cadre_relief("image-24.gif"); $gd_formats = lire_meta("gd_formats"); $creer_preview = lire_meta("creer_preview"); $taille_preview = lire_meta("taille_preview"); + if ($taille_preview < 10) $taille_preview = 120; echo "<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3 WIDTH=\"100%\">"; echo "<TR><TD BGCOLOR='$couleur_foncee'>"; @@ -47,25 +65,56 @@ if ($flag_gd) { echo "</TD></TR>"; echo "<TR><TD ALIGN='$spip_lang_left' class='verdana2'>"; - if ($gd_formats) { + if (($flag_gd AND $gd_formats) OR $flag_imagick OR $convert_command) { afficher_choix('creer_preview', $creer_preview, array('oui' => _T('item_choix_generation_miniature'), 'non' => _T('item_choix_non_generation_miniature'))); echo "<p>"; - } - echo "<div style='border: 1px dashed #404040; margin: 6px; padding: 6px;'>"; - if ($gd_formats) - echo _T('info_format_image', array('gd_formats' => $gd_formats))."<p>"; + if ($creer_preview == "oui") { + echo "<div style='border: 1px dashed #404040; margin: 6px; padding: 6px;'><table width='99%' align='center'><tr>"; + + // Tester les formats + if ($flag_gd) { + $nb_process ++; + afficher_choix_vignette($p = 'gd1'); + + if ($flag_ImageCreateTrueColor) { + afficher_choix_vignette($p = 'gd2'); + $nb_process ++; + } + } + + if ($flag_imagick) { + afficher_choix_vignette($p = 'imagick'); + $nb_process ++; + } + + if ($convert_command) { + afficher_choix_vignette($p = 'convert'); + $nb_process ++; + } + + echo "</tr></table>\n"; + + if ($nb_process>1) { + echo "<div>"._L("Veuillez sélectionner la meilleure méthode de fabrication des vignettes en cliquant sur l'image correspondante"); + } else if ($nb == 1 AND $process == '') { + ecrire_meta('image_process', $p); + ecrire_metas(); + } + + echo "<div>"; + + if ($gd_formats AND (lire_meta('image_process')=='gd1' OR lire_meta('image_process')=='gd2')) + echo '<div>'._T('info_format_image', array('gd_formats' => $gd_formats)).'</div>'; - // Tester les formats acceptes par GD - echo "<a href='../spip_image.php3?test_formats=oui&redirect=config-fonctions.php3'>"._T('lien_test_format_image')."</a>"; - echo "</div>"; + echo " "._T('info_taille_maximale_vignette'); + echo " <INPUT TYPE='text' NAME='taille_preview' VALUE='$taille_preview' class='fondl' size=5>"; + echo " "._T('info_pixels'); - if ($creer_preview == "oui") { - echo " "._T('info_taille_maximale_vignette'); - echo " <INPUT TYPE='text' NAME='taille_preview' VALUE='$taille_preview' class='fondl' size=5>"; - echo " "._T('info_pixels'); + echo "</div>"; + } } echo "</TD></TR>\n"; diff --git a/ecrire/inc_config.php3 b/ecrire/inc_config.php3 index c98b076218005b17f472e71973d13510f9870c65..da770b97e18c19bf622cc37a4fcd5a9bd1ad769a 100644 --- a/ecrire/inc_config.php3 +++ b/ecrire/inc_config.php3 @@ -59,6 +59,8 @@ function init_config() { 'creer_htpasswd' => 'non', + 'image_process' => '', + 'langue_site' => $lang, 'multi_articles' => 'non', @@ -225,6 +227,7 @@ function appliquer_modifs_config() { 'jours_neuf', 'forum_prive_admin', + 'image_process', 'activer_moteur', 'activer_statistiques', diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3 index 122d7282863fccf0c1457e1f4fdb6115f699baee..66a19bc55bbf5bfb4101adf4ebdd0b8b37026b4c 100644 --- a/ecrire/inc_filtres.php3 +++ b/ecrire/inc_filtres.php3 @@ -523,52 +523,35 @@ function exposer ($id, $identique='on', $different='') { // Reduire la taille d'un logo // -function reduire_image($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; - +function reduire_image($img, $taille = 120, $taille_y=0) { + include_ecrire('inc_logos.php3'); + + if (!$taille_y) + $taille_y = $taille; + + if (!$img) return; + + // 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) AND eregi("(IMG/.*)\.(jpg|gif|png)$", $logo, $regs)) { + $nom = $regs[1]; + $format = $regs[2]; + $destination = $logo.'-'.$taille.'x'.$taille_y; + if ($preview = creer_vignette($nom, $taille, $taille_y, $format, $destination)) { + $vignette = $preview['fichier']; + $width = $preview['width']; + $height = $preview['height']; + return "<img src='$vignette' name='$name' border='0' align='$align' alt='' hspace='$espace' vspace='$espace' width='$width' height='$height' class='spip_logos' />"; + } else { + $taille_origine = @getimagesize("IMG/$logo"); + if ($taille_origine) { // Calculer le ratio - $srcWidth = ImageSX($srcImage); - $srcHeight = ImageSY($srcImage); + $srcWidth = $taille_origine[0]; + $srcHeight = $taille_origine[1]; if ($srcWidth > $taille OR $srcHeight > $taille) { $ratioWidth = $srcWidth/$taille; @@ -586,59 +569,7 @@ function reduire_image($img, $taille = 120) { $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' />"; - } + return "<img src='$logo' name='$name' width='$destWidth' height='$destHeight' border='0' align='$align' alt='' hspace='$espace' vspace='$espace' class='spip_logos' />"; } } } diff --git a/ecrire/inc_logos.php3 b/ecrire/inc_logos.php3 index a3b4eb6dad1e4ab958fa4185dee7965398d1b809..aae6492942ca88301867241d50deaa7f99ed1223 100644 --- a/ecrire/inc_logos.php3 +++ b/ecrire/inc_logos.php3 @@ -6,9 +6,6 @@ if (defined("_ECRIRE_INC_LOGOS")) return; define("_ECRIRE_INC_LOGOS", "1"); -include_ecrire ("inc_admin.php3"); - - function get_image($racine) { if (@file_exists("../IMG/$racine.gif")) { $fichier = "$racine.gif"; @@ -172,4 +169,133 @@ function afficher_logo($racine, $titre) { } +// +// Creation automatique d'une vignette +// + +function creer_vignette($image, $newWidth, $newHeight, $format, $destination, $process='AUTO', $force=false) { + global $convert_command; + + if ($process == 'AUTO') + $process = lire_meta('image_process'); + + // liste des formats qu'on sait lire + $formats_lecture = array('jpg','png','gif'); + + // si le doc n'est pas une image, refuser + if (!eregi(",$format,", ",".join(',', $formats_lecture).",")) + return; + + // chercher un cache + while (list(,$fmt) = each ($formats_lecture)) + if (@file_exists($destination.'.'.$fmt)) { + $vignette = $destination.'.'.$fmt; + @unlink($vignette); + } + + // utiliser le cache ? + if ($force OR !$vignette OR (@filemtime($vignette) < @filemtime($image))) { + + // Calculer le ratio + if (!$srcsize = @getimagesize($image)) return; + $srcWidth = $srcsize[0]; + $srcHeight = $srcsize[1]; + $ratioWidth = $srcWidth/$newWidth; + $ratioHeight = $srcHeight/$newHeight; + + if ($ratioWidth < $ratioHeight) { + $destWidth = $srcWidth/$ratioHeight; + $destHeight = $newHeight; + } + else { + $destWidth = $newWidth; + $destHeight = $srcHeight/$ratioWidth; + } + + // imagemagick en ligne de commande + if ($process == 'convert') { + $vignette = $destination.".jpg"; + $commande = "$convert_command -size ${newWidth}x${newHeight} $image -geometry ${newWidth}x${newHeight} +profile \"*\" $vignette"; + shell_exec($commande); + } + else + // imagick (php4-imagemagick) + if ($process == 'imagick') { + $vignette = "$destination.jpg"; + + $handle = imagick_create(); + $handle AND imagick_read($handle, $srcImage) + AND imagick_resize($handle, $destWidth, $destHeight, IMAGICK_FILTER_UNKNOWN, 0) + AND $ok = imagick_write($handle, $vignette); + + if (!$ok) { + echo imagick_failedreason( $handle ) ; + echo imagick_faileddescription( $handle ) ; + return; + } + } else + // gd ou gd2 + if ($process == 'gd1' OR $process == 'gd2') { + + // Recuperer l'image d'origine + if ($format == "jpg") { + $srcImage = @ImageCreateFromJPEG($image); + } + else if ($format == "gif"){ + $srcImage = @ImageCreateFromGIF($image); + } + else if ($format == "png"){ + $srcImage = @ImageCreateFromPNG($image); + } + if (!$srcImage) return; + + // Choisir le format destination + // - on sauve de preference en JPEG (meilleure compression) + // - pour le GIF : les GD recentes peuvent le lire mais pas l'ecrire + $gd_formats = lire_meta("gd_formats"); + if (ereg("jpg", $gd_formats)) + $destFormat = "jpg"; + else if ($format == "gif" AND ereg("gif", $gd_formats) AND $GLOBALS['flag_ImageGif']) + $destFormat = "gif"; + else if (ereg("png", $gd_formats)) + $destFormat = "png"; + if (!$destFormat) return; + + // Initialisation de l'image destination + if ($process == 'gd2' 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 (($process == 'gd2') AND function_exists('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 + $vignette = "$destination.$destFormat"; + $format = $destFormat; + if ($destFormat == "jpg") + ImageJPEG($destImage, $vignette, 70); + else if ($destFormat == "gif") + ImageGIF($destImage, $vignette); + else if ($destFormat == "png") + ImagePNG($destImage, $vignette); + + ImageDestroy($srcImage); + ImageDestroy($destImage); + } + } + + $size = @getimagesize($vignette); + $retour['width'] = $size[0]; + $retour['height'] = $size[1]; + $retour['fichier'] = $vignette; + $retour['format'] = $format; + + return $retour; +} + ?> diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3 index f178a0670331c2e37332fa730b3fcd455bd396c2..f6147a036ed3bf8cc1aa8849388ddb91e30ce813 100644 --- a/ecrire/inc_version.php3 +++ b/ecrire/inc_version.php3 @@ -106,6 +106,11 @@ $dossier_squelettes = ""; // navigateur l'accepte (valable pour apache 1.3 seulement) ? $auto_compress = true; +// creation des vignettes avec image magick en ligne de commande : mettre +// 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'; + // faut-il loger les infos de debug dans data/spip.log ? (peu utilise) $debug = false; @@ -208,11 +213,12 @@ $flag_sapi_name = function_exists("php_sapi_name"); $flag_utf8_decode = function_exists("utf8_decode"); $flag_ldap = function_exists("ldap_connect"); $flag_flock = function_exists("flock"); -$flag_ImageCreateTrueColor = function_exists("ImageCreateTrueColor") && function_exists("gd_info"); -$flag_ImageCopyResampled = function_exists("ImageCopyResampled") && function_exists("gd_info"); +$flag_ImageCreateTrueColor = function_exists("ImageCreateTrueColor"); +$flag_ImageCopyResampled = function_exists("ImageCopyResampled"); $flag_ImageGif = function_exists("ImageGif"); $flag_ImageJpeg = function_exists("ImageJpeg"); $flag_ImagePng = function_exists("ImagePng"); +$flag_imagick = function_exists("imagick_create"); // http://pear.sourceforge.net/en/packages.imagick.php $flag_multibyte = function_exists("mb_encode_mimeheader"); $flag_iconv = function_exists("iconv"); $flag_strtotime = function_exists("strtotime"); diff --git a/spip_image.php3 b/spip_image.php3 index d162da0c32a37e84ea58bd26c0828d6d6c37bbfb..58c7080957c37c1c0ade22ba71d7b0dc811ae7f8 100644 --- a/spip_image.php3 +++ b/spip_image.php3 @@ -8,116 +8,48 @@ include_ecrire("inc_meta.php3"); include_ecrire("inc_admin.php3"); include_local("inc-cache.php3"); +$taille_preview = lire_meta("taille_preview"); +if ($taille_preview < 10) $taille_preview = 120; -// verifier les formats acceptes par GD -if ($test_formats == "oui") { - $gd_formats = Array(); - if (function_exists('ImageCreateFromJPEG')) { - $srcImage = @ImageCreateFromJPEG("IMG/test.jpg"); - if ($srcImage) { - $gd_formats[] = "jpg"; - ImageDestroy( $srcImage ); +if ($test_vignette) { +// verifier les formats acceptes par GD + if ($test_vignette == "gd1") { + $gd_formats = Array(); + if (function_exists('ImageCreateFromJPEG')) { + $srcImage = @ImageCreateFromJPEG("IMG/test.jpg"); + if ($srcImage) { + $gd_formats[] = "jpg"; + ImageDestroy( $srcImage ); + } } - } - if (function_exists('ImageCreateFromGIF')) { - $srcImage = @ImageCreateFromGIF("IMG/test.gif"); - if ($srcImage) { - $gd_formats[] = "gif"; - ImageDestroy( $srcImage ); + if (function_exists('ImageCreateFromGIF')) { + $srcImage = @ImageCreateFromGIF("IMG/test.gif"); + if ($srcImage) { + $gd_formats[] = "gif"; + ImageDestroy( $srcImage ); + } } - } - if (function_exists('ImageCreateFromPNG')) { - $srcImage = @ImageCreateFromPNG("IMG/test.png"); - if ($srcImage) { - $gd_formats[] = "png"; - ImageDestroy( $srcImage ); + if (function_exists('ImageCreateFromPNG')) { + $srcImage = @ImageCreateFromPNG("IMG/test.png"); + if ($srcImage) { + $gd_formats[] = "png"; + ImageDestroy( $srcImage ); + } } - } - - if ($gd_formats) $gd_formats = join($gd_formats, ","); - ecrire_meta("gd_formats", $gd_formats); - ecrire_metas(); -} - - -// -// Creation automatique d'une vignette -// - -function creer_vignette($image, $newWidth, $newHeight, $format) { - // Recuperer l'image d'origine - if ($format == "jpg") { - $srcImage = @ImageCreateFromJPEG($image); - } - else if ($format == "gif"){ - $srcImage = @ImageCreateFromGIF($image); - } - else if ($format == "png"){ - $srcImage = @ImageCreateFromPNG($image); - } - if (!$srcImage) return; - - // Calculer le ratio - $srcWidth = ImageSX($srcImage); - $srcHeight = ImageSY($srcImage); - $ratioWidth = $srcWidth/$newWidth; - $ratioHeight = $srcHeight/$newHeight; - - if ($ratioWidth < $ratioHeight) { - $destWidth = $srcWidth/$ratioHeight; - $destHeight = $newHeight; - } - else { - $destWidth = $newWidth; - $destHeight = $srcHeight/$ratioWidth; + if ($gd_formats) $gd_formats = join(",", $gd_formats); + ecrire_meta("gd_formats", $gd_formats); + ecrire_metas(); } - // Choisir le format destination - // - on sauve de preference en JPEG (meilleure compression) - // - pour le GIF : les GD recentes peuvent le lire mais pas l'ecrire - $gd_formats = lire_meta("gd_formats"); - if (ereg("jpg", $gd_formats)) - $destFormat = "jpg"; - else if ($format == "gif" AND ereg("gif", $gd_formats) AND $GLOBALS['flag_ImageGif']) - $destFormat = "gif"; - else if (ereg("png", $gd_formats)) - $destFormat = "png"; - if (!$destFormat) return; - - // 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 = ereg_replace('\.(.*)$','-s',$image).'.'.$destFormat; - if ($destFormat == "jpg") { - ImageJPEG($destImage, $destination, 70); - } - else if ($destFormat == "gif") { - ImageGIF($destImage, $destination); + // et maintenant envoyer la vignette de tests + if (ereg("^(gd1|gd2|imagick|convert)$", $test_vignette)) { + include_ecrire('inc_logos.php3'); + if ($preview = creer_vignette('IMG/test_image.jpg', $taille_preview, $taille_preview, 'jpg', "IMG/test_$test_vignette", $test_vignette, true)) + @header('Location: IMG/test_'.$test_vignette.'.'.$preview['format']); } - else if ($destFormat == "png") { - ImagePNG($destImage, $destination); - } - ImageDestroy($srcImage); - ImageDestroy($destImage); - - $retour['width'] = $destWidth; - $retour['height'] = $destHeight; - $retour['fichier'] = $destination; - $retour['format'] = $format; - return $retour; + exit; } @@ -232,6 +164,8 @@ function ajout_image($source, $dest) { function ajout_doc($orig, $source, $dest, $mode, $id_document, $doc_vignette='', $titre_vignette='', $descriptif_vignette='', $titre_automatique=true) { global $hash_id_auteur, $hash, $id_article, $type; + $flag_immagick = true; + // // Securite // @@ -293,27 +227,29 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document, $doc_vignette='', // $creer_preview = lire_meta("creer_preview"); $taille_preview = lire_meta("taille_preview"); - $gd_formats = lire_meta("gd_formats"); $format_img = strtolower(substr($dest_path, strrpos($dest_path,".")+1, strlen($dest_path))); if ($format_img == "jpeg") $format_img == "jpg"; if ($taille_preview < 10) $taille_preview = 120; - if ($mode == 'document' AND $format_img AND ereg($format_img, $gd_formats) AND $creer_preview == 'oui') { - $preview = creer_vignette($dest_path, $taille_preview, $taille_preview, $format_img); - $hauteur_prev = $preview['height']; - $largeur_prev = $preview['width']; - $fichier_prev = $preview['fichier']; - $format_prev = $preview['format']; - if ($format_prev == "jpg") $format_prev = 1; - else if ($format_prev == "png") $format_prev = 2; - else if ($format_prev == "gif") $format_prev = 3; - - $query = "INSERT INTO spip_documents (id_type, titre, largeur, hauteur, fichier, date) VALUES ('$format_prev', '', '$largeur_prev', '$hauteur_prev', '$fichier_prev', NOW())"; - spip_query($query); - $id_preview = spip_insert_id(); - $query = "UPDATE spip_documents SET id_vignette = '$id_preview' WHERE id_document = $id_document"; - spip_query($query); + if ($mode == 'document' AND $creer_preview == 'oui') { + include_ecrire('inc_logos.php3'); + $destination_vignette = ereg_replace("\.$format_img$", "-s", $dest_path); + if ($preview = creer_vignette($dest_path, $taille_preview, $taille_preview, $format_img, $destination_vignette)) { + $hauteur_prev = $preview['height']; + $largeur_prev = $preview['width']; + $fichier_prev = $preview['fichier']; + $format_prev = $preview['format']; + if ($format_prev == "jpg") $format_prev = 1; + else if ($format_prev == "png") $format_prev = 2; + else if ($format_prev == "gif") $format_prev = 3; + + $query = "INSERT INTO spip_documents (id_type, titre, largeur, hauteur, fichier, date) VALUES ('$format_prev', '', '$largeur_prev', '$hauteur_prev', '$fichier_prev', NOW())"; + spip_query($query); + $id_preview = spip_insert_id(); + $query = "UPDATE spip_documents SET id_vignette = '$id_preview' WHERE id_document = $id_document"; + spip_query($query); + } } //