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

Messages postés
3
Date d'inscription
mercredi 6 mai 2009
Dernière intervention
30 juin 2009
- - Dernière réponse : momoreira
Messages postés
3
Date d'inscription
mercredi 6 mai 2009
Dernière intervention
30 juin 2009
- 30 juin 2009 à 18:34
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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
341
Date d'inscription
dimanche 18 septembre 2005
Dernière intervention
22 octobre 2009
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de cs_TropNul
Messages postés
341
Date d'inscription
dimanche 18 septembre 2005
Dernière intervention
22 octobre 2009
0
Merci
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.
Commenter la réponse de cs_TropNul
Messages postés
3
Date d'inscription
mercredi 6 mai 2009
Dernière intervention
30 juin 2009
0
Merci
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.
Commenter la réponse de momoreira
Messages postés
341
Date d'inscription
dimanche 18 septembre 2005
Dernière intervention
22 octobre 2009
0
Merci
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
Commenter la réponse de cs_TropNul
Messages postés
3
Date d'inscription
mercredi 6 mai 2009
Dernière intervention
30 juin 2009
0
Merci
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
Commenter la réponse de momoreira

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.