Problème d'UP d'image

Eléphanteau du PHP | 16 Messages

18 sept. 2008, 14:25

Bonjour à tous,

J'ai un problème (si si, c'est vrai), le voici :
Sur une page, j'envoie une image. Dès qu'elle dépasse les 600ko (proximo), j'ai un problème pour la récupérer.
Non pas que le temps d'up est trop long, j'ai tout vérifier, c'est au moment du 'imagecreatefromjpg()' que le script plante, il ne donne strictement plus rien et n'affiche pas la suite de la page.

J'ai pu isoler cela en insérant des 'print_r $_FILES["fichier"]' et cela fonctionne juste avant l'imagecreate (du moins il insère tout ce que je veux) et après ... il n'affiche rien.
Grâce à cela on sait aussi que cela ne vient pas de l'up, mais bien après.

J'ai testé directement un imagecopy(), qui ne fonctionne pas non plus.

Avec des images de moins de 600Ko, aucun problème, le reste de mon script se lance correctement ...

Niveau code, voici mon formulaire :
<form method="post" action="index.php" enctype="multipart/form-data" >
Parcourez votre disque dur et choississez votre fichier image que vous souhaitez transférer.<br />
Attention, la taille maximale autorisée est de <?php echo ($poids_max/1024); ?> Ko (Pour toute taille supérieur, <a href='index.php?page=contact'>Contactez-nous</a>).<br />
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $poids_max;?>" />

<input type="file" name="fichier" size="30"><br /><br />
Cliquez sur le bouton suivant pour envoyer votre image.<br />
<input type="submit" name="upload" onclick="showWait('Patientez svp - sauvegarde de votre image <br /> Cela peut prendre quelques minutes');" />
</form>
Le traitement derrière (je préviens, je ne vous mets pas la vérification du type et du poids)
// Récupération de l'image envoyée via le formulaire
$img = imagecreatefromjpeg($_FILES['fichier']['tmp_name']);
$nom_fichier = time().'.jpg';
			
// Récupère les dimensions
$size = getimagesize($_FILES['fichier']['tmp_name']);
$larg = $size[0];
$long = $size[1];
$coeff = $larg/$width;
$larg = $larg/$coeff;
$long = $long/$coeff;
			
$img_dest = imagecreatetruecolor($larg, $long);
			
$copy = imagecopyresampled($img_dest, $img, 0, 0, 0, 0, $larg, $long, $size[0], $size[1]);
			
imagejpeg($img_dest, $repertoire.'min/'.$nom_fichier);
imagejpeg($img, $repertoire.$nom_fichier);
			
imagedestroy($img_dest);
			
$url = $repertoire.''.$nom_fichier.'';
$picurl = $repertoire . $nom_fichier;
$picurlMin = $repertoire.'min/'.$nom_fichier;
Merci pour votre aide ;)
------
-- Lenouvdu44 Propulsed by Yen (xD)
------

Image

Petit nouveau ! | 4 Messages

18 sept. 2008, 15:35

Bonjour,

Déjà, petite suggestion, ajoute une petite valeur aléatoire au nom de ton fichier, si deux personnes envoient un fichier en même temps, ton script risque trop de planter.

Je pense qu'il s'agit d'une histoire de mémoire limite pour l'exécution d'un script :
cf : http://fr.php.net/manual/fr/function.im ... .php#76968

En gros, il faut temporairement augmenter la mémoire qu'alloue PHP au script pour qu'il puisse générer ton image tranquillement.

Eléphanteau du PHP | 16 Messages

18 sept. 2008, 15:58

Re-

Merci pour l'avertissement, c'était déjà fait ;) (je n'ai pas mis cette tite partie)

J'ai essayé en rajoutant un
header("Content-Type: image/jpeg");
ini_set('memory_limit', '50M');
mais cela n'a pas fonctionné. Il se peut que je l'utilise mal :/ ; je l'ai rajouté juste avant le imgcreatefromjpg ... sachant qu'après cela n'aurait servit à rien vu que l'exécution s'arrête juste avant.

Pour information, j'ai réussi à copier l'image envoyée des temporaires à son dossier de destination.

Le problème Ne vient pas du poids mais de la TAILLE : j'ai testé des jpg de 1600*1200 qui passe (550ko) et des jpg de 1600*1200 qui passe alors qu'elles pèsent 1.5Mo. Par contre, dès que cela dépasse les 2Mpx ...

Ma question, maintenant que mon image est sur mon serv, puis-je en créer une miniature sans utiliser de imagecreatefromjpg ?
J'arrive à l'ouvrir et à l'afficher (en binaire) via la fonction fopen, est-ce qu'elle serait adaptée pour le redimensionnement ?
------
-- Lenouvdu44 Propulsed by Yen (xD)
------

Image

Eléphanteau du PHP | 16 Messages

21 sept. 2008, 13:59

Un petit UP :/
------
-- Lenouvdu44 Propulsed by Yen (xD)
------

Image

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

21 sept. 2008, 19:18

Modération :
lenouvdu44, les "up" sont interdits sur PHPFrance.

Si tu n'as pas obtenu de réponse, c'est (au choix) :
- que ta question est mal formulée : reformule-la différemment ;
- que personne ne connaît la réponse ici : faire un "up" ne te donnera pas davantage de résultats ;
- que la réponse demandée exige un travail important que personne ne va faire à ta place ;
- que trop peu de temps s'est écoulé depuis ton précédent message pour qu'un membre ait pu y répondre.

Merci de prendre le temps de lire les règlements.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

21 sept. 2008, 19:19

Modération :
lenouvdu44, le multipostage est interdit sur le forum.

Ce sujet a été verrouillé et sera supprimé sous peu.
Des réponses peuvent être apportées à cette adresse :
http://www.phpfrance.com/forums/voir_sujet-243038.php

Merci de prendre le temps de lire les règlements.