Script de redimensionnement photos/images

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


beber24
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 247
Inscription: Ven Fév 03, 2006 10:22

Script de redimensionnement photos/images

Message le Mer Fév 21, 2007 18:41

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 ?


dd32
Modérateur
Modérateur
 
Messages: 3261
Inscription: Ven Sep 09, 2005 10:21

Message le Mer Fév 21, 2007 20:12



maniT4c
WRInaute passionné
WRInaute passionné
 
Messages: 517
Inscription: Ven Jan 28, 2005 11:49

Message le Mer Fév 21, 2007 23:00



beber24
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 247
Inscription: Ven Fév 03, 2006 10:22

Message le Jeu Fév 22, 2007 16:59

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: Tout sélectionner
<?
/*
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><?

} ?>

ACth
WRInaute passionné
WRInaute passionné
 
Messages: 795
Inscription: Sam Nov 11, 2006 12:32

Message le Jeu Fév 22, 2007 17:53

As-tu cherché à comprendre un petit peu le système ?


beber24
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 247
Inscription: Ven Fév 03, 2006 10:22

Message le Jeu Fév 22, 2007 18:14

Oui

J'ai essayer de modifier evidemment la ligne :

Code: Tout sélectionner
<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

ACth
WRInaute passionné
WRInaute passionné
 
Messages: 795
Inscription: Sam Nov 11, 2006 12:32

Message le Jeu Fév 22, 2007 18:38

-

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.


beber24
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 247
Inscription: Ven Fév 03, 2006 10:22

Message le Ven Fév 23, 2007 11:22

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 !


e-kiwi
Modérateur
Modérateur
 
Messages: 13853
Inscription: Mar Déc 23, 2003 9:04

Message le Ven Fév 23, 2007 11:48

>> je n'arrive pas mettre plus que 300 ko en upload
surement une limite de ton hebergeur


beber24
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 247
Inscription: Ven Fév 03, 2006 10:22

Message le Ven Fév 23, 2007 12:34

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 !


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Hello



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités