diff --git a/ecrire/inc_documents.php3 b/ecrire/inc_documents.php3 index 50bb12a599d9a62a8c3c9c275251991c8959e095..4600380832a7b3651071bab9b216e836e5c3a9d1 100644 --- a/ecrire/inc_documents.php3 +++ b/ecrire/inc_documents.php3 @@ -369,8 +369,8 @@ function texte_upload_manuel($dir, $inclus = '') { if ($ext == "zip") { - $texte_upload .= "\n<option value=\"$f\"> $lefichier (en tant que fichier zip)</option>"; - $texte_upload .= "\n<option value=\"$f--unzip\"> $lefichier (décompacter et installer les documents séparés)</option>"; + $texte_upload .= "\n<option value=\"$f\"> $lefichier (en tant que fichier zip)</option>"; + $texte_upload .= "\n<option value=\"$f--unzip\"> $lefichier (décompacter et installer les documents séparés)</option>"; } else if ($exts[$ext] == 'oui') $texte_upload .= "\n<option value=\"$f\"> $lefichier</option>"; } @@ -381,9 +381,9 @@ function texte_upload_manuel($dir, $inclus = '') { function texte_vignette_document($largeur_vignette, $hauteur_vignette, $fichier_vignette, $fichier_document) { - if ($largeur_vignette > 140) { - $rapport = 140.0 / $largeur_vignette; - $largeur_vignette = 140; + if ($largeur_vignette > 120) { + $rapport = 120.0 / $largeur_vignette; + $largeur_vignette = 120; $hauteur_vignette = ceil($hauteur_vignette * $rapport); } if ($hauteur_vignette > 130) { @@ -550,39 +550,40 @@ function afficher_documents_non_inclus($id_article, $type = "article", $flag_mod echo "<div style='text-align: center;'><a href='../$fichier'><img src='$fichier_vignette' border='0'></a></div>"; } - $process = lire_meta('image_process'); - // imagick (php4-imagemagick) - if ($process == 'imagick') { - echo "<div class='verdana1' style='text-align:center'>"; - $link_rot = $image_link; - $link_rot->addVar('redirect', $redirect_url); - $link_rot->addVar('hash', calculer_action_auteur("rotate ".$id_document)); - $link_rot->addVar('hash_id_auteur', $connect_id_auteur); - $link_rot->addVar('doc_rotate', $id_document); - $link_rot->addVar('vignette_aff', $id_document); - $link_rot->addVar('var_rot', -90); - echo "<a href='".$link_rot->getUrl("portfolio")."'>gauche</a> |"; - - $link_rot = $image_link; - $link_rot->addVar('redirect', $redirect_url); - $link_rot->addVar('hash', calculer_action_auteur("rotate ".$id_document)); - $link_rot->addVar('hash_id_auteur', $connect_id_auteur); - $link_rot->addVar('doc_rotate', $id_document); - $link_rot->addVar('vignette_aff', $id_document); - $link_rot->addVar('var_rot', 90); - echo "<a href='".$link_rot->getUrl("portfolio")."'>droite</a> |"; - - $link_rot = $image_link; - $link_rot->addVar('redirect', $redirect_url); - $link_rot->addVar('hash', calculer_action_auteur("rotate ".$id_document)); - $link_rot->addVar('hash_id_auteur', $connect_id_auteur); - $link_rot->addVar('doc_rotate', $id_document); - $link_rot->addVar('vignette_aff', $id_document); - $link_rot->addVar('var_rot', 180); - echo "<a href='".$link_rot->getUrl("portfolio")."'>180°</a>"; + if ($flag_modif) { + $process = lire_meta('image_process'); + // imagick (php4-imagemagick) + if ($process == 'imagick' OR $process == 'gd2' OR $process == 'convert') { + echo "<div class='verdana1' style='text-align:center'>"; + $link_rot = $image_link; + $link_rot->addVar('redirect', $redirect_url); + $link_rot->addVar('hash', calculer_action_auteur("rotate ".$id_document)); + $link_rot->addVar('hash_id_auteur', $connect_id_auteur); + $link_rot->addVar('doc_rotate', $id_document); + $link_rot->addVar('vignette_aff', $id_document); + $link_rot->addVar('var_rot', -90); + echo "<a href='".$link_rot->getUrl("portfolio")."'>gauche</a> |"; + + $link_rot = $image_link; + $link_rot->addVar('redirect', $redirect_url); + $link_rot->addVar('hash', calculer_action_auteur("rotate ".$id_document)); + $link_rot->addVar('hash_id_auteur', $connect_id_auteur); + $link_rot->addVar('doc_rotate', $id_document); + $link_rot->addVar('vignette_aff', $id_document); + $link_rot->addVar('var_rot', 90); + echo "<a href='".$link_rot->getUrl("portfolio")."'>droite</a> |"; + + $link_rot = $image_link; + $link_rot->addVar('redirect', $redirect_url); + $link_rot->addVar('hash', calculer_action_auteur("rotate ".$id_document)); + $link_rot->addVar('hash_id_auteur', $connect_id_auteur); + $link_rot->addVar('doc_rotate', $id_document); + $link_rot->addVar('vignette_aff', $id_document); + $link_rot->addVar('var_rot', 180); + echo "<a href='".$link_rot->getUrl("portfolio")."'>180°</a>"; + } } - if ($flag_modif) { if ($flag_deplier) $triangle = bouton_block_visible("port$id_document"); else $triangle = bouton_block_invisible("port$id_document"); diff --git a/spip_image.php3 b/spip_image.php3 index 8da517d48c683f10303576f42c3cc5ac88661dcb..1822e0a6a816472c29ed14b671887cc836b6918f 100644 --- a/spip_image.php3 +++ b/spip_image.php3 @@ -371,6 +371,60 @@ if ($image_supp) { // Faire tourner une image // +//$imagePath - path to your image; function will save rotated image overwriting the old one +//$rtt - should be 90 or -90 - cw/ccw +function gdRotate($imagePath,$rtt){ + if(preg_match("/\.(png)/i", $imagePath)) $src_img=ImageCreateFromPNG($imagePath); + elseif(preg_match("/\.(jpg)/i", $imagePath)) $src_img=ImageCreateFromJPEG($imagePath); + elseif(preg_match("/\.(bmp)/i", $imagePath)) $src_img=ImageCreateFromWBMP($imagePath); + $size=GetImageSize($imagePath); + //note: to make it work on GD 2.xx properly change ImageCreate to ImageCreateTrueColor + + $process = lire_meta('image_process'); + if ($process == "gd2") $dst_img=ImageCreateTrueColor($size[1],$size[0]); + else $dst_img=ImageCreate($size[1],$size[0]); + if($rtt==90){ + $t=0; + $b=$size[1]-1; + while($t<=$b){ + $l=0; + $r=$size[0]-1; + while($l<=$r){ + imagecopy($dst_img,$src_img,$t,$r,$r,$b,1,1); + imagecopy($dst_img,$src_img,$t,$l,$l,$b,1,1); + imagecopy($dst_img,$src_img,$b,$r,$r,$t,1,1); + imagecopy($dst_img,$src_img,$b,$l,$l,$t,1,1); + $l++; + $r--; + } + $t++; + $b--; + } + } + elseif($rtt==-90){ + $t=0; + $b=$size[1]-1; + while($t<=$b){ + $l=0; + $r=$size[0]-1; + while($l<=$r){ + imagecopy($dst_img,$src_img,$t,$l,$r,$t,1,1); + imagecopy($dst_img,$src_img,$t,$r,$l,$t,1,1); + imagecopy($dst_img,$src_img,$b,$l,$r,$b,1,1); + imagecopy($dst_img,$src_img,$b,$r,$l,$b,1,1); + $l++; + $r--; + } + $t++; + $b--; + } + } + ImageDestroy($src_img); + ImageInterlace($dst_img,0); + ImageJPEG($dst_img,$imagePath); +} + + if ($doc_rotate) { // Securite if (!verifier_action_auteur("rotate $doc_rotate", $hash, $hash_id_auteur)) { @@ -393,6 +447,18 @@ if ($doc_rotate) { imagick_write($handle, $image); if (!@file_exists($image)) return; // echec imagick } + else if ($process == "gd2") { // theoriquement compatible gd1, mais trop forte degradation d'image + if ($var_rot == 180) { // 180 = 90+90 + gdRotate ($image, 90); + gdRotate ($image, 90); + } else { + gdRotate ($image, $var_rot); + } + } + else if ($process = "convert") { + $commande = "$convert_command -rotate $var_rot $image $image"; + exec($commande); + } $size_image = @getimagesize($image); $largeur = $size_image[0];