Upload d'image et copie pour redimensionnement

Résolu/Fermé
Tarble Messages postés 591 Date d'inscription mercredi 29 septembre 2010 Statut Membre Dernière intervention 27 avril 2016 - 18 mars 2016 à 01:06
Tarble Messages postés 591 Date d'inscription mercredi 29 septembre 2010 Statut Membre Dernière intervention 27 avril 2016 - 24 mars 2016 à 12:25
Bonjour,
je fais un test sur l'upload d'images. Ca marche nickel sauf quand je veux réutiliser la même image uploadée pour la redimensionner plusieurs fois:

if(isset($_FILES['image']) && $_FILES['image']['error']==0)
{
        if ($_FILES['image']['size']<=10000000)
        {
                $infosfichier = pathinfo($_FILES['image']['name']);
                $extension_upload = $infosfichier['extension'];
                $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
                if (in_array($extension_upload, $extensions_autorisees))
                {
                    if($infosfichier['extension']=="jpg" || $infosfichier['extension']=="jpeg")
                    {
                        $source = imagecreatefromjpeg($_FILES['image']['tmp_name']);
                    }
                    elseif($infosfichier['extension']=="png")
                    {
                        $source = imagecreatefrompng($_FILES['image']['tmp_name']);
                    }
                    elseif($infosfichier['extension']=="gif")
                    {
                        $source = imagecreatefromgif($_FILES['image']['tmp_name']);
                    }
                    else
                    {
                        echo "Erreur lors de la convertion de votre image.";
                        return false;
                    }
                    
                    $taille_A = imagecreatetruecolor(300, 420);
                    $taille_B = imagecreatetruecolor(200, 280);
                    $taille_C = imagecreatetruecolor(150, 210);

                    $largeur_source = imagesx($source);
                    $hauteur_source = imagesy($source);
                    $largeur_taille = imagesx($taille_A);
                    $hauteur_taille = imagesy($taille_A);
                    imagecopyresampled($taille_A, $source, 0, 0, 0, 0, $largeur_taille, $hauteur_taille, $largeur_source, $hauteur_source);
                    imagejpeg($taille_A, $_FILES['image']['tmp_name'], 80);
                    move_uploaded_file($_FILES['image']['tmp_name'], '../../img/cards/1-A.jpg');
					
					$largeur_source = imagesx($source);
                    $hauteur_source = imagesy($source);
                    $largeur_taille = imagesx($taille_B);
                    $hauteur_taille = imagesy($taille_B);
                    imagecopyresampled($taille_B, $source, 0, 0, 0, 0, $largeur_taille, $hauteur_taille, $largeur_source, $hauteur_source);
                    imagejpeg($taille_B, $_FILES['image']['tmp_name'], 80);
                    move_uploaded_file($_FILES['image']['tmp_name'], '../../img/cards/1-B.jpg');
					
					$largeur_source = imagesx($source);
                    $hauteur_source = imagesy($source);
                    $largeur_taille = imagesx($taille_C);
                    $hauteur_taille = imagesy($taille_C);
                    imagecopyresampled($taille_C, $source, 0, 0, 0, 0, $largeur_taille, $hauteur_taille, $largeur_source, $hauteur_source);
                    imagejpeg($taille_C, $_FILES['image']['tmp_name'], 80);
                    move_uploaded_file($_FILES['image']['tmp_name'], '../../img/cards/1-C.jpg');
 
                    echo "Votre image à bien été uploadée.";
                }
        }
        else
        {
            echo "Votre image est trop lourde. Veuillez en uploader une de moins de 200ko.<br /><a href=\"index.php?id=".$_POST['id']."\">Retour</a>";
        }
}
else
{
    echo "Erreur, veuillez réuploader l'image.<br /><a href=\"index.php?id=".$_POST['id']."\">Retour</a>";
}



Aucun message d'erreur mais seule l'image A est enregistrée. Avez vous une idée de quoi faire pour faire 3 images et pas une seule.

Merci bien :)
A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié par Pitet le 21/03/2016 à 11:14
Salut,

Le problème vient peut-être du fait que tu déplace l'image source via l'instruction move_uploaded_file juste après le premier redimensionnement, du coup les redimensionnements suivants ne fonctionne pas à cause de l'absence de l'image source.

Essaye d'utiliser un autre fichier temporaire pour la création de l'image redimensionnée (imagejpeg), par exemple :
// on crée l'image redimensionnée dans le fichier ../../img/cards/1-A.jpg
imagejpeg($taille_A, '../../img/cards/1-A.jpg', 80);
// donc pas besoin de déplacer l'image uploadé, on commente l'instruction move_uploaded_file
//move_uploaded_file($_FILES['image']['tmp_name'], '../../img/cards/1-A.jpg');


Bonne journée,
1
Tarble Messages postés 591 Date d'inscription mercredi 29 septembre 2010 Statut Membre Dernière intervention 27 avril 2016 103
24 mars 2016 à 12:25
je te remmercie
0