pb avec une fonction resize image

Eléphant du PHP | 86 Messages

09 mai 2008, 19:14

Bonjour

Je me suis fais une fonction pour redimensionner une image, je fais une miniature, et une grande image et j'efface le fichier d'origine ( fichier que j'ai uploadé)

// Fonction qui permet de reduire une photo du repertoire apload-images-velos
//      on enregistre une grande version dans apload  en qualite 50
//      on enregistre une miniature dans apload-mini en qualite 25
function resize_image($srcfilename, $newname)
{
	echo 'bonjour','<br />';

							 $chemin_origine = '../apload-images-velos/' . $srcfilename ;
                             $image =  imagecreatefromjpeg($chemin_origine);  // on cree l'image à partie de l'origine
                             $size = 0.2;  // coefficient de reduction

                            list($width, $height) = getimagesize($chemin_origine);  // retourne un array --> list // presentation
                            $final_width = $width * $size;  //largeur finale
                            $final_height = $height * $size;  // hauteur finale
                            // Resizing the Image
                            $tn = imagecreatetruecolor($final_width, $final_height);
                            imagecopyresampled($tn, $image, 0, 0, 0, 0, $final_width, $final_height, $width, $height);  // on reduit l'image'
//------------------

     //Enregistrement de la grande image
      $chemin_apload = '../apload/' .  $newname ;
      $reponse1 = imagejpeg($image,  $chemin_apload  , 50) ;   // on enregistre l'image 50 correspond à la qualité
      if ($reponse1){
      		echo 'ficihier apload: OK','<br />';
      }

      //Enregistrement de la petite image
      $chemin_apload_mini = '../apload-mini/' .  $newname ;
      $reponse2 = imagejpeg($tn, $chemin_apload_mini, 50) ;  // on enregistre l'image miniature'
	  if ($reponse2){
      		echo 'ficihier apload-mini: OK','<br />';
      }
     imageDestroy($image);
     imageDestroy($tn);
	 unlink($chemin_origine);  //je détruis le fichier original uploader
	 
	 echo "image resizée", '<br />';	 
}




$upload = move_uploaded_file($_FILES['fichier']['tmp_name'], $dest_dossier . $dest_fichier);
							if($upload){ // si le fichier est bien uploader.
									echo 'upload: ok','<br />';
									resize_image( $dest_fichier, $dest_fichier);   // je reduit l'image et l'enregistre dans apload et apload-mini et efface dans apload-image-velos
							}

Le Pb : quand je fais: resize_image( $dest_fichier, $dest_fichier);
Parfois l'image n'est pas réduite, en clair resize_image n'a pas fait son travail, comme puis je modifier mon code pour être sur que l'image a été redimensionnée ?

Mammouth du PHP | 881 Messages

10 mai 2008, 05:15

D'abord, t'es bien sûr que la fonction est appelée? Ton echo "Bonjour" s'affiche à tous les coups?

Je ne comprends pas pourquoi le facteur de réduction est de 1/5. Si on t'envoie une toute petite image, elle sera elle aussi réduite. Il me semble que l'on pourrait avoir une taille maximale d'image et réduire aussi souvent que l'image finale ne respecte pas cette condition, un genre de
while ($tailleImage > 100000) {
   //réduire
   echo "Je réduis votre image de 20%";
}

Au nombre de passage à l'[i]echo[/i], tu pourrais vérifier si l'image passe bien par la moulinette.

Pourquoi dis-tu que l'image ne passe pas?  Est-ce parce que ton "Bonjour" n'apparaît pas?
Quand ne passe-t-elle pas au réducteur? Est-ce quand il y a plusieurs images de téléchargées?
Soyez artisans de paix

Eléphant du PHP | 86 Messages

18 mai 2008, 15:54

Ok merci, maintenant ça a l'air de marcher

Eléphant du PHP | 224 Messages

18 mai 2008, 16:00

Bonjour :)
Ok merci, maintenant ça a l'air de marcher
Stakanof, il serait peut-être intéressant, pour ceux qui suivent cet échange, si tu pouvais donner quelques pistes sur la solution que tu as adopté... ça peut aussi rendre service à d'autres...

Merci, à+ :)
Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)

Invité
Invité n'ayant pas de compte PHPfrance

18 mai 2008, 23:04

Désolé, maintenant ça marche, mais je ne sais pas pourquoi.