Bonjour à tous,
J'utilise dans une interface d'administration d'un site un script permettant d'uploader une photo, la redimensionner, puis en ajax (asynchrone) créer 3 vignettes de dimensions différentes.
J'envoie 3 photos en POST dans le même formulaire, volumineuses (2 ou 3 Mo chacune), et les images sont traitées avec move_uploaded_file, puis imagecreatefromjpeg, imagecreatetruecolor, imagecopyresampled.
Sur le serveur (dédié), j'ai augmenté très copieusement les valeurs upload_max_filesize, post_max_size, memory_limit, max_execution_time et max_input_time.
Le script tourne jusqu'au bout, m'envoie les messages de retour attendus (photo copiée, redimensionnée, etc), mais j'ai systématiquement un problème avec la 2ème photo (bande grise plus ou moins étendue en bas de l'image).
Bizarrement, la 3ème photo passe toujours bien.
J'ai pensé que ma 2ème image était corrompue : même en inversant les images, c'est toujours la 2ème qui pose problème.
Pour info, la fonction de redimensionnement (pour la lisibilité, j'ai supprimé les vérifications) :
Won't you please, please help me ? (The Beatles)
Merci ...
Modifié par migli (03 Jun 2010 - 11:11)
J'utilise dans une interface d'administration d'un site un script permettant d'uploader une photo, la redimensionner, puis en ajax (asynchrone) créer 3 vignettes de dimensions différentes.
J'envoie 3 photos en POST dans le même formulaire, volumineuses (2 ou 3 Mo chacune), et les images sont traitées avec move_uploaded_file, puis imagecreatefromjpeg, imagecreatetruecolor, imagecopyresampled.
Sur le serveur (dédié), j'ai augmenté très copieusement les valeurs upload_max_filesize, post_max_size, memory_limit, max_execution_time et max_input_time.
Le script tourne jusqu'au bout, m'envoie les messages de retour attendus (photo copiée, redimensionnée, etc), mais j'ai systématiquement un problème avec la 2ème photo (bande grise plus ou moins étendue en bas de l'image).
Bizarrement, la 3ème photo passe toujours bien.
J'ai pensé que ma 2ème image était corrompue : même en inversant les images, c'est toujours la 2ème qui pose problème.
Pour info, la fonction de redimensionnement (pour la lisibilité, j'ai supprimé les vérifications) :
function resizePhoto($name_filephoto, $photoDir, $photoLargeurMax, $photoHauteurMax, $prefixePhoto, $hauteurFixe = '', $largeurFixe = '') {
$image = $name_filephoto;
$source = $photoDir;
$destination = $photoDir;
$size = getimagesize($source.$image);
$largeur_src=$size[0];
$hauteur_src=$size[1];
$image_src=imagecreatefromjpeg($source.$image);
$ratio = ajoutPhoto::ratio($photoLargeurMax, $photoHauteurMax, $largeur_src, $hauteur_src, $hauteurFixe, $largeurFixe);
if($ratio!=1) { // si ratio != 1
$image_dest=imagecreatetruecolor(round($largeur_src*$ratio), round($hauteur_src*$ratio));
imagecopyresampled($image_dest,$image_src,0,0,0,0,round($largeur_src*$ratio),round($hauteur_src*$ratio),$largeur_src,$hauteur_src);
imagedestroy($image_src);
if(!imagejpeg($image_dest, $destination.$prefixePhoto.$image)){
$result = "<p>le dimensionnement de la photo $image a échoué. Réessayez dans quelques minutes. Si le problème persiste, contactez le webmaster.<br />destination = ".$destination.$prefixePhoto.$image."</p> \n <hr /> \n ";
}
else {
imagedestroy($image_dest);
chmod($destination.$prefixePhoto.$image, 0775);
$result = "<p>Photo $image redimensionnée </p> \n";
}
}
else { // si ratio = 1
chmod($destination.$prefixePhoto.$image, 0775);
$result = "<p>la photo est au format, elle n'a pas été redimensionnée.</p> \n <hr /> \n ";
}
echo $result;
}
Won't you please, please help me ? (The Beatles)
Merci ...
Modifié par migli (03 Jun 2010 - 11:11)