Page 1 sur 1

pb avec une fonction resize image

Posté : 09 mai 2008, 19:14
par stakanof
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 ?

Posté : 10 mai 2008, 05:15
par Patriboom
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?

Posté : 18 mai 2008, 15:54
par stakanof
Ok merci, maintenant ça a l'air de marcher

Posté : 18 mai 2008, 16:00
par FredoMkb
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, à+ :)

Posté : 18 mai 2008, 23:04
par Invité
Désolé, maintenant ça marche, mais je ne sais pas pourquoi.