Renommer une image à l'upload [Résolu]

Signaler
Messages postés
3
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
30 juin 2009
-
momoreira
Messages postés
3
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
30 juin 2009
-
Bonjour tout le monde, voila je vous explique mon problème. Je cherche à renommer une image lors de mon upload pour une galerie, jusque là rien de très compliqué, cependant voila le hic.
Ma galerie est toute simple avec une fonction Js qui consiste à dire que quand je clique sur l'image miniature, elle vient s'afficher en taille normale au centre de la page.
J'ai donc une fonction upload qui redimensionne l'image à la taille "normale" et j'ai essayé d'y ajouter en même temps la création et le redimmensionnement de cette même image mais à la taille "miniature".
J'ai dans mon dossier Galerie des images nommées image1.jpg, image1_reduit.jpg, image2.jpg, image2_reduit.jpg...etc...
Je cherche donc à renommer la seconde image miniature crée en y ajoutant "_reduit" à la fin de son nom mais je ne vois pas à quel moment le faire.

Voici un extrait de ma page: (chemin est le nom que j'ai attribué à mon "Parcourir" du formulaire = D)

<?php include("connexion.php");
      $titre = $_FILES['chemin']['name'];
      $chemin = $_FILES['chemin']['tmp_name'];
      $emplacement = "../Images/Site/Galerie/";

                if(!empty($chemin) AND is_uploaded_file($chemin))
                  {   
                    if(filesize($chemin)<2000000000)
                      { if(move_uploaded_file($chemin,$emplacement.$titre))
                          { $newchemin = $emplacement.$titre;
                            $newchemin2 = $emplacement.$titre.???;   C'est ici que je ne sais quoi mettre...
                            $file = $newchemin ;
                            $x = 448;
                            $y = 299;
                            $x2 = 120;
                            $y2 = 80;
                            $size = getimagesize($file);

                            if ($size) {
                                if ($size['mime']=='image/jpeg' ) {
                                    $img_big = imagecreatefromjpeg($file);
                                    $img_new = imagecreate($x, $y);
                                    $img_new2 = imagecreate($x2, $y2);
                          
                                    $img_mini = imagecreatetruecolor($x, $y)
                                    or   $img_mini = imagecreate($x, $y);
                                    $img_mini2 = imagecreatetruecolor($x2, $y2)
                                    or   $img_mini2 = imagecreate($x2, $y2);
                                  
                                    imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
                                    imagecopyresized($img_mini2,$img_big,0,0,0,0,$x2,$y2,$size[0],$size[1]);

                                    imagejpeg($img_mini,$file );
                                    imagejpeg($img_mini2,$file );
                                }
                                elseif ($size['mime']=='image/png' ) {
                                    $img_big = imagecreatefrompng($file);
                                    $img_new = imagecreate($x, $y);
                                    $img_new2 = imagecreate($x2, $y2);
                            
                                    $img_mini = imagecreatetruecolor($x, $y)
                                    or   $img_mini = imagecreate($x, $y);
                                    $img_mini2 = imagecreatetruecolor($x2, $y2)
                                    or   $img_mini2 = imagecreate($x2, $y2);

                                
                                    imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
                                    imagecopyresized($img_mini2,$img_big,0,0,0,0,$x2,$y2,$size[0],$size[1]);

                                    imagepng($img_mini,$file );
                                    imagepng($img_mini2,$file );
                                }
                                elseif ($size['mime']=='image/gif' ) {
                                    $img_big = imagecreatefromgif($file);
                                    $img_new = imagecreate($x, $y);
                                    $img_new2 = imagecreate($x2, $y2);
                               
                                    $img_mini = imagecreatetruecolor($x, $y)
                                    or   $img_mini = imagecreate($x, $y);
                                    $img_mini2 = imagecreatetruecolor($x2, $y2)
                                    or   $img_mini2 = imagecreate($x2, $y2);

                    
                                    imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
                                    imagecopyresized($img_mini2,$img_big,0,0,0,0,$x2,$y2,$size[0],$size[1]);

                                    imagegif($img_mini,$file );
                                    imagegif($img_mini2,$file );
                                }
                            }
                            $result=mysql_query("INSERT INTO photo_galerie (reduit, normal) VALUES ('$?????', '$newchemin')"); Et ici je dois donc avoir ma variable contenant le chemin+nom de la miniature de l'image...

Merci de votre aide

5 réponses

Messages postés
340
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
22 octobre 2009

Damn it copy/pasting !

Il y a une erreur dans mon précédent post. Voici le correctif.

$newchemin2 = $emplacement . pathinfo($titre,PATHINFO_FILENAME) . '_reduit' . pathinfo($titre,PATHINFO_EXTENSION);

Cordialement
Messages postés
340
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
22 octobre 2009

Bonjour,

Ça ne doit pas être un code que tu as fait donc.

Je ferais un truc du genre :

$newchemin2 = $emplacement . $pathinfo($titre,PATHINFO_FILENAME) . '_reduit' . $pathinfo($titre,PATHINFO_EXTENSION);

Cordialement

NB : Tu dois absolument lire le fichier d'aide de PHP si tu veux continuer avec la programmation PHP.
Messages postés
3
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
30 juin 2009

Merci beaucoup trop nul.
Cela fonctionne très bien et le chemin de l'image réduite s'insert correctement dans la BDD.
Cependant je ne parviens pas à créer l'image réduite, du moins elle ne se retrouve pas dans le dossier Images/Galerie.
Peux tu m'aider stp?!
Merci.
Messages postés
340
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
22 octobre 2009

De rien.

Pour ta nouvelle question, voici une page qui contient tout ce qu'il te faut pour trouver la solution, ou du moins une grande partie de la solution.

http://www.php.net/manual/fr/function.imagecopyresampled.php

Cordialement
Messages postés
3
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
30 juin 2009

Re salut à toi,

je pense avoir trouvé une solution plus simple, j'ai repris ma fonction de redimensionnement en fonction du type MIME et voici une solution qui fonctionne:

if(filesize($chemin)<2000000000)
                      { if(move_uploaded_file($chemin,$emplacement.$titre))
                          { $newchemin = $emplacement.$titre;
                            $newchemin2 = $emplacement . pathinfo($titre,PATHINFO_FILENAME) . '_reduit.' . pathinfo($titre,PATHINFO_EXTENSION);
                            $file = $newchemin ; # L'emplacement de l'image à redimensionner. L'image peut être de type jpeg, gif ou png
                            $file2 = $newchemin2 ;
                            $x = 448;
                            $y = 299;
                            $x2 = 120;
                            $y2 = 80; # Taille en pixel de l'image redimensionnée
                            $size = getimagesize($file);

                            if ($size) {
                                if ($size['mime']=='image/jpeg' ) {
                                    $img_big = imagecreatefromjpeg($file); # On ouvre l'image d'origine
                                    $img_big2 = imagecreatefromjpeg($file);Je n'ai eu qu'à recréer une image à partir de mon fichier uploadé
                                    $img_new = imagecreate($x, $y);
                                    $img_new2 = imagecreate($x2, $y2);
                                    # création de la miniature
                                    $img_mini = imagecreatetruecolor($x, $y)
                                    or   $img_mini = imagecreate($x, $y);
                                    $img_mini2 = imagecreatetruecolor($x2, $y2)
                                    or   $img_mini2 = imagecreate($x2, $y2);
                                    // copie de l'image, avec le redimensionnement.
                                    imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
                                    imagecopyresized($img_mini2,$img_big2,0,0,0,0,$x2,$y2,$size[0],$size[1]);

                                    imagejpeg($img_mini,$file );
                                    imagejpeg($img_mini2,$file2 );
                                }
Et voila le travail, l'upload redimmensionne mon image et en crée une deuxième selon les dimensions x2 et y2 en la renommant avec un _reduit.
D'ailleurs tu avais oublié un '.' après le _réduit, dans:
$newchemin2 = $emplacement . pathinfo($titre,PATHINFO_FILENAME) . '_reduit' . pathinfo($titre,PATHINFO_EXTENSION);

Merci beaucoup de ton aide en tout cas !
Cordialement