From 2d92801e5ed9567adfa59a85f7b06787373974da Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Sun, 20 Mar 2005 19:52:25 +0000 Subject: [PATCH] quand on fait tourner un fichier il faut l'enregistrer dans le meme format qu'on le lit, sinon il est fini (Steph) --- ecrire/inc_getdocument.php3 | 49 +++++++++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/ecrire/inc_getdocument.php3 b/ecrire/inc_getdocument.php3 index 70f3880065..41b25b8865 100644 --- a/ecrire/inc_getdocument.php3 +++ b/ecrire/inc_getdocument.php3 @@ -631,15 +631,44 @@ function supprime_document_et_vignette($doc_supp) { // Faire tourner une image // function gdRotate ($imagePath,$rtt){ - if(preg_match("/\.(png)/i", $imagePath)) - $src_img=ImageCreateFromPNG($imagePath); - else if(preg_match("/\.(jpg)/i", $imagePath)) - $src_img=ImageCreateFromJPEG($imagePath); - else if(preg_match("/\.(bmp)/i", $imagePath)) - $src_img=ImageCreateFromWBMP($imagePath); + if(preg_match("/\.(png|gif|jpe?g|bmp)$/i", $imagePath, $regs)) { + switch($regs[1]) { + case 'png': + $src_img=ImageCreateFromPNG($imagePath); + $save = 'imagepng'; + break; + case 'gif': + $src_img=ImageCreateFromGIF($imagePath); + $save = 'imagegif'; + break; + case 'jpeg': + case 'jpg': + $src_img=ImageCreateFromJPEG($imagePath); + $save = 'Imagejpeg'; + break; + case 'bmp': + $src_img=ImageCreateFromWBMP($imagePath); + $save = 'imagewbmp'; + break; + default: + return false; + } + } + + if (!$src_img) { + spip_log("gdrotate: image non lue, $imagePath"); + return false; + } + $size=@getimagesize($imagePath); + if (!($size[0] * $size[1])) return false; + + if (function_exists('imagerotate')) { + $dst_img = imagerotate($src_img, $rtt, 0); + } else { - // Sous GD2 : ImageCreateTrueColor + // Creer l'image destination (hauteur x largeur) et la parcourir + // pixel par pixel (un truc de fou) $process = lire_meta('image_process'); if ($process == "gd2") $dst_img=ImageCreateTrueColor($size[1],$size[0]); @@ -682,9 +711,13 @@ function gdRotate ($imagePath,$rtt){ $b--; } } + } ImageDestroy($src_img); ImageInterlace($dst_img,0); - ImageJPEG($dst_img,$imagePath); + + # obligatoire d'enregistrer dans le meme format, puisque c'est + # dans le fichier de depart... + $save($dst_img,$imagePath); } function tourner_document($var_rot, $doc_rotate, $convert_command) { -- GitLab