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

cs_plopiplop Messages postés 3 Date d'inscription vendredi 2 novembre 2007 Statut Membre Dernière intervention 17 mars 2008 - 17 mars 2008 à 13:46
gretata Messages postés 172 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 19 janvier 2011 - 17 mars 2008 à 16:51
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

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
17 mars 2008 à 16:31
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
*/
0
gretata Messages postés 172 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 19 janvier 2011
17 mars 2008 à 16:51
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
0
Rejoignez-nous