Script de redimensionnement photos/images

WRInaute discret
Bonjour à tous,

Je cherche un script permettant de redimensionner à la volée les photos exactement comme cette page :

*ww.webmycar.net/myscripts/image-reduction.php

Ca existe ?
 
WRInaute discret
Merci DD32 !!!

le premier est presque parfait sauf que je n'arrive pas mettre plus que 300 ko en upload ... Y a t'il une solution pour augmenter ? Encore merci DD32 !

Code:
<?
/*
Générateur de vignettes en PHP - v1.2
Didier - www.ASP-PHP.net
*/

// GESTION DU TÉLÉCHARGEMENT

if(!empty($_GET["dwn"])) {
   if(!strpos(" ".$_GET["dwn"],"..")) { // protection ;)
      header("content-type: application/octet-stream");
      $f = substr($_GET["dwn"],strrpos($_GET["dwn"],"/")+1);
      header("Content-Disposition: attachment; filename=".$f);
      flush(); // Envoie le buffer
      readfile($_GET["dwn"]);   
   }

// CREATION DE LA VIGNETTE

} else {

function redimage($img_src,$img_dest,$dst_w,$dst_h) {
   // Lit les dimensions de l'image
   $size = GetImageSize($img_src);  
   $src_w = $size[0]; $src_h = $size[1];  
   // Teste les dimensions tenant dans la zone
   $test_h = round(($dst_w / $src_w) * $src_h);
   $test_w = round(($dst_h / $src_h) * $src_w);
   // Si Height final non précisé (0)
   if(!$dst_h) $dst_h = $test_h;
   // Sinon si Width final non précisé (0)
   elseif(!$dst_w) $dst_w = $test_w;
   // Sinon teste quel redimensionnement tient dans la zone
   elseif($test_h>$dst_h) $dst_w = $test_w;
   else $dst_h = $test_h;

   // La vignette existe ?
   $test = (file_exists($img_dest));
   // L'original a été modifié ?
   if($test)
      $test = (filemtime($img_dest)>filemtime($img_src));
   // Les dimensions de la vignette sont correctes ?
   if($test) {
      $size2 = GetImageSize($img_dest);
      $test = ($size2[0]==$dst_w);
      $test = ($size2[1]==$dst_h);
   }

   // Créer la vignette ?
   if(!$test) {
      // Crée une image vierge aux bonnes dimensions
      // $dst_im = ImageCreate($dst_w,$dst_h);
      $dst_im = ImageCreateTrueColor($dst_w,$dst_h); 
      // Copie dedans l'image initiale redimensionnée
      $src_im = ImageCreateFromJpeg($img_src);
      // ImageCopyResized($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
      ImageCopyResampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
      // Sauve la nouvelle image
      ImageJpeg($dst_im,$img_dest);
      // Détruis les tampons
      ImageDestroy($dst_im);  
      ImageDestroy($src_im);
   }

   // Affiche le descritif de la vignette
   echo "SRC='".$img_dest."?t=".time()."' WIDTH=".$dst_w." HEIGHT=".$dst_h;
}

// AFFICHAGE DE LA PAGE

?><HTML><HEAD><TITLE>Générateur de vignettes</TITLE>
   <STYLE>
      td,input { font:normal 8pt Verdana }
   </STYLE>
</HEAD><BODY bgcolor=#FFFFFF>

   <center><table width=100% height=100%><tr>
      <td align=center>

         <font size=4>Désignez une image .JPG</font> <i>(300 Ko max.)<br>

<? // GESTION DE L'UPLOAD

$rep="./"; // Répertoire de stockage (doit avoir les droits d'écriture ! CHMOD)
$f = $rep."original.jpg"; // path du fichier original

if(isset($_FILES['photo'])) {
   if($_FILES['photo']['size']>0) {
      if(strtolower(substr($_FILES['photo']['name'],-4))!=".jpg") { ?>
           <b>Ce n'était pas un .JPG !</b>
      <? } elseif (!move_uploaded_file($_FILES['photo']['tmp_name'], $f)) { ?>
           <b>Erreur d'enregistrement !</b>
      <? }
   } else { ?>
      <b>Trop gros fichier !</b>
   <? }
}?>
         <table><FORM METHOD="POST" ENCTYPE="multipart/form-data">
            <INPUT TYPE=HIDDEN NAME=MAX_FILE_SIZE VALUE=<? echo 300*1024;?>>
            <tr><td align=center><INPUT TYPE=FILE NAME="photo"></td></tr>
            <tr><td align=center><INPUT TYPE=SUBMIT value="Générer la vignette"></td></tr>
         </FORM></table>

<? // AFFICHAGE DE LA VIGNETTE ET DES INFOS

$f2 = $rep."vignette.jpg"; // path de la vignette
$largeur=150; if(!empty($_GET["largeur"])) $largeur = $_GET["largeur"];
$hauteur=150; if(!empty($_GET["hauteur"])) $hauteur = $_GET["hauteur"];

   if(file_exists($f)) { ?>

         <table border=0 cellspacing=5 cellpadding=0><tr>
            <td>
               <center><b>Original</b></center><br>
               Poids : <?echo round(filesize($f)/1024)?> Ko<br>
               Taille : <?
                  $size = GetImageSize($f);
                  echo $size[0]."x".$size[1]; ?><br>
               <br><center>
                  <A href="vignette.php?dwn=<?echo $f?>">Télécharger</A>
               </center>
            </td><td align=center>
               <IMG <? redimage($f,$f2,$largeur,$hauteur)?>>
            </td><td>
               <center><b>Vignette</b></center><br>
               Poids : <?echo round(filesize($f2)/1024)?> Ko<br>
               Taille : <?
                  $size = GetImageSize($f2);
                  echo $size[0]."x".$size[1]; ?><br>
               <br><center>
                  <A href="vignette.php?dwn=<?echo $f2?>">Télécharger</A>
               </center>
            </td>
         </tr><tr>

<? // CHOIX DES DIMENSIONS DE LA VIGNETTE
?>
            <form><td colspan=3 align=center>
               <table><tr>
                  <td>Largeur :</td>
                  <td><select name="largeur">
                     <?for($i=10;$i<=150;$i+=10) {
                        echo "<option";
                        if($i==$largeur) echo " SELECTED";
                        echo ">".$i."</option>\n";
                     } ?>
                  </select></td>
                  <td>Hauteur :</td>
                  <td><select name="hauteur">
                     <?for($i=10;$i<=150;$i+=10) {
                        echo "<option";
                        if($i==$hauteur) echo " SELECTED";
                        echo ">".$i."</option>\n";
                     } ?>
                  </select></td>
                  <td><input type=submit value=Modifier></td>
            </td></form>
         </tr></table>

   <? } ?>

      </td>
   </tr></table></center>

</BODY></HTML><?

} ?>
 
WRInaute discret
Oui

J'ai essayer de modifier evidemment la ligne :

Code:
<INPUT TYPE=HIDDEN NAME=MAX_FILE_SIZE VALUE=<? echo 300*1024;?>>

en mettant 3000 par exemple mais je tombe en erreur :

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 6400 bytes) in /..../redim.php on line 55
 
WRInaute impliqué
-

Voila une page sur la gestion de chargement de fichiers qui est très explicite.
Ainsi tu devrais pouvoir "maitriser" ton sujet.

La documentation de PHP est vraiment très bien faite, tu y apprends beaucoup,
notamment grâce aux exemples et / ou commentaires.

Bonne chance.
 
WRInaute discret
Ok merci !

En fait il suffit d'augmenter la taille du memory_limit = 16M dans le php.ini et le tour et joué merci beaucoup à vous tous !
 
WRInaute discret
En fait j'ai mis memory_limit = 32M dans php.ini max de mon hébergeur et j'ai modifié :

<INPUT TYPE=HIDDEN NAME=MAX_FILE_SIZE VALUE=<? echo 300*1024;?>>

en

<INPUT TYPE=HIDDEN NAME=MAX_FILE_SIZE VALUE=<? echo 2000*1024;?>>

Et ainsi je peux aller jusqu'à 2MO ! C'est super je vous remercie beaucoup et hop un service de plus pour mes visiteurs !
 
Discussions similaires
Haut