Page 1 sur 1

vignette

Posté : 22 févr. 2006, 15:09
par roumayne
Bonjour,
je suis confronté à un pb sur la création de vignette.
Aprés création de la vignette je me trouve avec un autre fichier dans la racine du site.
j'aimerais juste créer la vignette et ne pas avoir une autre image.
je vous envoie mon code source merci.
<?
@$ok=$_REQUEST["ok"];
//@$image=$_REQUEST["image"];

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é
      $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;
}


if($ok)
{
$rep="vignette/"; // Répertoire de stockage (doit avoir les droits d'écriture ! CHMOD)
$f=$_FILES['photo']['name']; //on récupére le nom du fichier image de dépare(image original)
if(isset($_FILES['photo']))
{
   if($_FILES['photo']['size']>0)
    {
      if(strtolower(substr($_FILES['photo']['name'],-4))!=".jpg")
	   { 
           echo"Ce n'était pas un .JPG !";
		 }  
       elseif (!move_uploaded_file($_FILES['photo']['tmp_name'], $f))
	    { 
          echo" <b>Erreur d'enregistrement !</b>";
       }
     }
	else 
    { 
    echo"<b>Trop gros fichier !</b>";
    }
 }	
 
$f2 = $rep.$f;  // path de la vignette
//echo $f2;
$largeur=150; if(!empty($_GET["largeur"])) $largeur = $_GET["largeur"];
$hauteur=150; if(!empty($_GET["hauteur"])) $hauteur = $_GET["hauteur"];
if(file_exists($f))
 {
  redimage($f,$f2,$largeur,$hauteur);
 }
 else
 {
  echo "ce fichier n'existe pas ";
 }
}
?>


<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
<div id="Layer1" style="position:absolute; left:165px; top:80px; width:644px; height:293px; z-index:1">
  <table width="100%"  border="1">
  <form action="" method="post" enctype="multipart/form-data" name="form1">
  <input type="hidden" name="ok" value="true">
    <tr>
      <td width="23%">Image</td>
      <td width="77%">
        <input name="photo" type="file" id="photo">
</td>
    </tr>
    <tr>
      <td><input type="submit" name="Submit" value="ok"></td>
      <td>&nbsp;</td>
    </tr></form>
  </table>
</div>

Posté : 22 févr. 2006, 15:42
par Ryle
C'est à dire ? tu veux supprimer l'image initiale qui a permit de générer la vignette ?

Ce qui se passe, c'est que lorsque ton image d'origine est envoyée sur le serveur pour être traitée, elle est déplacée/renommée par le move_uploaded_file($_FILES['photo']['tmp_name'], $f)

Il te suffit donc de supprimer ce fichier après génération de vignette, ce que tu dois pouvoir faire avec la fonction unlink() :)

vignette

Posté : 22 févr. 2006, 15:48
par Invité
merci pour la réponse je vais essayer car la fonction unlink() m'est inconnue je vais effectuer des recherches sur google par rapport à cette fonction mais si vous pouvez aussi me donner certaines informations ce serait sympa.
une fois de plus merci

Posté : 22 févr. 2006, 16:09
par Ryle
La bible du php à toujours garder sur soi http://www.php.net (ou sur un ordinateur à portée de main ;))

Et pour plus d'infos sur unlink().

L'utilisation est assez simple, il suffit de passer en paramètre l'emplacement et le nom du fichier que tu veux supprimer. Donc une fois la vignette réalisée, il ne te reste plus qu'à dégager la source :)