Redimmensionner une Image avant upload ..

Redimmensionner une Image avant upload .. - PHP - Programmation

Marsh Posté le 11-05-2005 à 19:04:47    

Bonjour,
 
Sur mon site, j'ai deux scripts, un qui permet de redimmensionner des images à la volée, et un autre d'upload:
 
Redimmensionner :
 

<?
 
  $filename = "../../".$HTTP_GET_VARS[src_pic];  
  // we store here the dimensions maximum a picture can take
  $size_max = 150;
 // $percent = 0.17;
   
  // Content type
 $ext = substr($HTTP_GET_VARS[src_pic],-3);
 $ext = strtolower($ext);  
if ($ext == "jpg" )
{
  header('Content-type: image/jpeg');
}
if ($ext == "gif" )
{
  header('Content-type: image/gif');
}
 
if ($ext == "png" )
{
  header('Content-type: image/png');
}
 
  // Calcul des nouvelles dimensions
  list($width, $height) = getimagesize($filename);
  // we test if the image is larger than $size_max
  if (($width > $size_max) || ($height > $size_max))
  {
      // The longer between $width and $height will be our limit
      if ($width > $height)
      {
        $percent = $size_max / $width;
      }else
      {
        $percent = $size_max / $height;
      }
     
    }
    else
    {
    $percent = 1;
    }
  $newwidth = $width * $percent;
  $newheight = $height * $percent;
   
  // chargement
  $thumb =imagecreatetruecolor($newwidth, $newheight);
 
if ($ext == "jpg" )
{
  $source = imagecreatefromjpeg($filename);
}
if ($ext == "gif" )
{
  $source = imagecreatefromgif($filename);
}
if ($ext == "png" )
{
  $source = imagecreatefrompng($filename);
}
   
   
  // Redimensionnement
   
  imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
   
  // Affichage
 
if ($ext == "jpg" )
{
  imagejpeg($thumb);
}
if ($ext == "gif" )
{
  imagegif($thumb);
}
if ($ext == "png" )
{
  imagepng($thumb);
}
   
?>


 
 
Upload :
 

<html><head>
<SCRIPT LANGUAGE='javascript'>
 function control()
   {
 
  var test_name = document.add_pic.nm_picture.value
  var test_src = document.add_pic.myFic.value
 
  if (test_name== "" )
  {
   alert ("Type a name for the picture." );
   return false;
  }
   
  if (test_src == "" )
  {
   alert ("Choose an image file to upload." );
   return false;
  }
  return true;
 
 }  
</SCRIPT>
 
</head>
 
<?  
if ( count ($HTTP_POST_VARS) == 0 )
{
?>
 
<?  
// We get all the picture category
    // We display all the image category:
    $request = "select * from gallery_cat";
    $answer = mysql_query($request)
      or die (mysql_error($anwser));
       
       
?>
<center><h1>Add a picture in the Gallery</h1></center>
<table border = 0 align = center>
<tr><td>
<FORM NAME = "add_pic" ACTION = "content/undermenu/gallery/add.php" METHOD = "POST" ENCTYPE = "multipart/form-data" OnSubmit = "return control()">
Name : </td><td><INPUT TYPE = text NAME = "nm_picture" id = "nm_picture"  size = 20 maxlength= 20></td></tr>
<tr><td>Source : </td><td><input type = "file" name = "myFic" id = "myFic" size = 23 </td></tr>
 
<?  
echo "<tr><td>Category :</td><td><select name = cat>";
while ($row = mysql_fetch_array($answer))
{
  echo "<option value = $row[id_cat]>$row[name_cat]";
}  
echo "</select>";
?>
</table><br>
<center><INPUT TYPE = submit VALUE = Ok><INPUT TYPE = reset VALUE = Clear > </center>
 
<?
}else
{?>
 
 
   
  <html>
  <head>
  <META HTTP-EQUIV = "refresh" "content = "3;URL = ../../../index.php?page=gallery">
  </head>
   
  <?
   
  include "../../../../conn.php";
  // errors
  $err = "";
     
  // folder of destination
   $folderDest = "../../../../content/gallery/";
   $nameDest       = $HTTP_POST_FILES["myFic"]["name"];
      $ext = substr($HTTP_POST_FILES["myFic"]["name"],-3);
 
  if (!(file_exists($folderDest.$nameDest)))
  {
    $ext = strtolower($ext);
    // We check the extention of the file
    if (($ext == "jpg" ) || ($ext == "gif" ) || ($ext == "png" ))
    {
    if (is_uploaded_file($HTTP_POST_FILES["myFic"]["tmp_name"]))
    {
     if (rename($HTTP_POST_FILES["myFic"]["tmp_name"],$folderDest.$nameDest))
     {
        $err = "";
     } else
      {
     $err = "folder";
      }
    } else
    {
    $err = "size";
    }
    }else
    {
   echo "<center>Bad type of file</center>";
     $err = "ext";
    }
  }else
  {
    $err = "";
  }
   
   
  // The file is now uploaded, we can add informations in the database
  if ($err == "" )
  {
     $racine = "content/gallery/";
     $picture= $racine.$HTTP_POST_FILES["myFic"]["name"];
     $requete = "INSERT INTO gallery VALUES (LAST_INSERT_ID() ,'".$HTTP_POST_VARS['nm_picture']."','$picture',\"$_POST[cat]\" );";
     $reponse = mysql_query($requete)
   OR DIE (mysql_error());
   
           
      echo "<center>Picture added :<br><br><img src = ../../../../$picture></center>";
      echo "<center><a href=\"javascript:history.back()\">Back to Administration</a>" ;
  }else
  {
      echo "<center>Error : $err";
    }
 
 
 
   
}  
?>


 
 
Je ne vois pas comment faire pour redimmensionner l'image puis de l'uploader
imagecopyresampled($thumb, $source, 0,... quel est le type de "$thumb? puis le donner a manger à mon script d'upload? Comment récupérer le nom du fichier contenu par $thumb.
 
Merci :hello:

Reply

Marsh Posté le 11-05-2005 à 19:04:47   

Reply

Marsh Posté le 11-05-2005 à 19:43:16    

Ce que tu veux, c'est qu'on t'explique un script que t'as chopé sur le net :D  ??


Message édité par Master p le 11-05-2005 à 19:44:49

---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 11-05-2005 à 19:50:47    

heu c'est moi qui l'ai fait... ca svoit pas?  [:minusplus]


Message édité par jijiz le 11-05-2005 à 19:50:58
Reply

Marsh Posté le 11-05-2005 à 20:11:00    

Ah bon, ok, si tu le dis  :whistle:  
 
En tout cas, c'est codé comme un porc :D
 
1/ Utiliser la variable $_SERVER['DOCUMENT_ROOT']
2/ Les $HTTP_GET_VARS, c'est has-been :o Maintenant, on utilise les $_GET.
3/ Utiliser le chemin absolu des pages vers lequel on pointe à la place de faire des href="../../../../index.php" (ce qui veut dire que c'est aussi bien voire mieux d'utiliser href="/index.php". Je suppose ici que tu voulais ramener sur la page d'accueil du site.)
 
Quant aux questions que tu poses, tu as les réponses sous tes yeux.


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 11-05-2005 à 20:18:33    

Je suis de bonne humeur :D
$thumb est une ressource (créée par "$thumb =imagecreatetruecolor($newwidth, $newheight);" ).
Idem pour $source ($source = imagecreatefromjpeg($filename);) sauf que là, cette resource n'est pas vide, elle contient l'image.
 
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);  
=> recopie $source en utilisant la partie contenue entre 0 et $width (pour la largeur) et entre 0 et $height (pour la longueur) et le place dans $thumb, de la partie allant de 0 à $newwidth (pour la largeur) et entre 0 et $newheight (pour la longueur).
 
 [:jagstang] sté tellment simple [:tinostar]


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 11-05-2005 à 20:35:11    

Master p a écrit :

Ah bon, ok, si tu le dis  :whistle:  
 
En tout cas, c'est codé comme un porc :D
 
1/ Utiliser la variable $_SERVER['DOCUMENT_ROOT']
2/ Les $HTTP_GET_VARS, c'est has-been :o Maintenant, on utilise les $_GET.
3/ Utiliser le chemin absolu des pages vers lequel on pointe à la place de faire des href="../../../../index.php" (ce qui veut dire que c'est aussi bien voire mieux d'utiliser href="/index.php". Je suppose ici que tu voulais ramener sur la page d'accueil du site.)
 
Quant aux questions que tu poses, tu as les réponses sous tes yeux.


 
 
tite réponse et explications,
 
j'ai utilisé $HTTP_GET_VARS car pour mon projet en iut, apache ne gérait pas le $_get...
Ensuite si j'utilise "/" pour désigner la racine du site, easyphp me renvoie dans 127.0.0.1, et non dans 127.0.0.1/monSite/ comme je le voudrais.  
 
C'est quoi $_SERVER['DOCUMENT_ROOT'] ?
 
Merci pour tes réponses.
Comment je fais pour obtenir le nom de l'image ressource contenu dans $thumb?


Message édité par jijiz le 11-05-2005 à 20:37:13
Reply

Marsh Posté le 11-05-2005 à 20:40:30    

$_SERVER['DOCUMENT_ROOT'] est la racine du serveur, mais dans ton cas (le serveur est mal configuré), ça te mèneras sur le répertoire parent.
Tu peux pas toucher à Apache ? sinon spa pratique :/


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 11-05-2005 à 22:23:18    

Franchement, c'est tellement porc ce code, que ça donne pas envie d'y plonger [:petrus75]


---------------
Expert en expertises
Reply

Marsh Posté le 12-05-2005 à 00:07:21    

jijiz a écrit :

Comment je fais pour obtenir le nom de l'image ressource contenu dans $thumb?


Bah, l'est dans $filename !!!
 
 

Reply

Marsh Posté le 12-05-2005 à 09:50:59    

Hermes le Messager a écrit :

Franchement, c'est tellement porc ce code, que ça donne pas envie d'y plonger [:petrus75]


oui et...?  
 
pour que ta remarque soit plus constructive, peux tu m'aider à améliorer mon code? [:minusplus]

Reply

Marsh Posté le 12-05-2005 à 09:50:59   

Reply

Marsh Posté le 12-05-2005 à 09:51:31    

donc au lieu de faire (rename($HTTP_POST_FILES["myFic"]["tmp_name"],$folderDest.$nameDest))
je fais  
(rename($thumb,$folderDest.$nameDest))
 
??
 
merci à vous

Reply

Marsh Posté le 12-05-2005 à 11:38:52    

up

Reply

Marsh Posté le 12-05-2005 à 12:33:52    

Hermes le Messager a écrit :

Franchement, c'est tellement porc ce code, que ça donne pas envie d'y plonger [:petrus75]


 
 
+1 :D
 
edit: tu upload et ensuite seulement tu peux redimenssioner, car l'inverse c'est impossible, si tu veux que ton script redimenssione l'image, il faut que l'image soit sur le serveur, pas sur le pc du client :D


Message édité par aspegic500mg le 12-05-2005 à 12:34:56
Reply

Marsh Posté le 12-05-2005 à 13:00:06    

aspegic500mg a écrit :

+1 :D
 
edit: tu upload et ensuite seulement tu peux redimenssioner, car l'inverse c'est impossible, si tu veux que ton script redimenssione l'image, il faut que l'image soit sur le serveur, pas sur le pc du client :D


Hmm je pensais qu'on pouvait redimmensionner une image avant de l'uploader. Merci

Reply

Marsh Posté le 12-05-2005 à 16:54:29    

Nouvelle question, comment parcourrir tout un répertoire contenant des images?

Reply

Marsh Posté le 12-05-2005 à 17:07:58    

Heu, faudrait un peu regarder la doc de PHP là quand même hein... :o
 
Tu vas sur php.net, tu télécharges la doc au format .chm en français (pratique pour les recherches) et tu cherches "fichier" ou "dossier" et tu regardes. Tu as non-seulement les fonctions s'y rapportant mais également les exemples de code etc... etc...
 
Un forum comme celui-ci ne remplace pas non plus la doc. :o


---------------
Expert en expertises
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed