Upload d'une image et création d'une miniature

Signaler
Messages postés
3
Date d'inscription
vendredi 2 novembre 2007
Statut
Membre
Dernière intervention
17 mars 2008
-
Messages postés
172
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2011
-
Salut à toi qui lit mon post,

je requiert votre aide pour un petit problème que je n'arrive pas a résoudre,

j'ai écrit un petit script qui me permet l'upload des photos (uniquement .jpeg pour le moment) puis qui la miniaturise, or il m'arrive d'avoir deux types de problèmes (ca marche des fois, et d'autre non ...).

1er probleme (certainement lié à l'upload) :

Warning: getimagesize(IMGP0919.JPG) [function.getimagesize]: failed to open stream: No such file or directory in C:\PHP\SIM\administration.php on line 688

Warning: imagecreatefromjpeg(IMGP0919.JPG) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in C:\PHP\SIM\administration.php on line 689

Warning: Division by zero in C:\PHP\SIM\administration.php on line 698

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\PHP\SIM\administration.php on line 698

Warning: Division by zero in C:\PHP\SIM\administration.php on line 699

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in C:\PHP\SIM\administration.php on line 699

Warning: imagejpeg(): supplied argument is not a valid Image resource in C:\PHP\SIM\administration.php on line 703

Warning: imagedestroy(): supplied argument is not a valid Image resource in C:\PHP\SIM\administration.php on line 704

2ème probleme qui lui est lié à la miniaturisation (en effet, l'image a été correctement telechargée):

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 12288 bytes) in C:\PHP\SIM\administration.php on line 689

Voici mon code :

if(isset($_FILES["image"]) && isset($_POST["envoyer"]))
    {
        $dos = $_GET["dir"];
        $dir = './galeries/'.$dos.'/';
        $pic = $_FILES["image"]["name"];
        $telechargement = $dir.basename($pic);
        move_uploaded_file($_FILES["image"]["tmp_name"],$telechargement);
       
        chdir($dir);
                $ratio = 100;
                $a = getimagesize($pic);
                $src = imagecreatefromjpeg($pic);
   
                if ( $a[0] > $a[1])
                {
                    $im =imagecreatetruecolor(round(($ratio/$a[1])*$a[0]), $ratio);
                    imagecopyresampled($im,$src,0,0,0,0,round(($ratio/$a[1])*$a[0]),$ratio,$a[0],$a[1]);
                }
                else
                {
                    $im = imagecreatetruecolor($ratio,round(($ratio/$a[0])*$a[1]));
                    imagecopyresampled($im,$src,0,0,0,0,$ratio,round($a[1]*($ratio/$a[0])),$a[0],$a[1]);
                }
   
                $nom = "mini_$pic";
                $creation = imagejpeg($im,$nom);
                imagedestroy($src);
        chdir('../../');
    }

    $dos = $_GET["dir"];
    $dossier = './galeries/'.$dos;
    $dir = opendir($dossier);
    chdir($dossier);
    echo '<form method ="post" action="" enctype="multipart/form-data">
         
                ----

                    Ajouter une image,
                    ,
                    ,
               
        
      
          ';

J
'ai remarqué que cette erreur n'était pas constante, elle peut m'arriver tout autant avec une image de 1,3Mo qu'avec une image de quasi 2Mo.

je ne fais pas d'essais avec des photos autre que .jpg ou .JPG pour le moment et toujours moin de 2Mo/photo pour ne pas dépasser la time_limit.

Je n'arrive vraiment pas a comprendre pourquoi cela marche parfois au lieu de tout le temps.

Puisse quelqu'un m'aider.

Merci d'avoir au moins lu l'intégralité de mon message

Plopiplop

2 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
salut
c'est l'upload limit, et le memory limit que tu risquerais de depasser.
No such file or directory

c'est un probleme qui vient avec move_uploaded_files apparement... tu devrais verifier le retour de cette fonction pour en etre certain
/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
Messages postés
172
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2011

salut,
pour le No such file or directory

c'est dans copy() le probleme, enfin moi c'était le cas,

Il faut que ton fichier que tu veux copier soit dans la destination, example :

$source = "C:\\tutu\\enslip.txt"
;
$destination="D:\\example\\enslip.txt";

copy(
$source,$destination);

si cela peut aider