Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2840 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  upload & librairie GD (image miroir) [resolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

upload & librairie GD (image miroir) [resolu]

n°1326566
mechkurt
Posté le 16-03-2006 à 11:40:50  profilanswer
 

en préambule, une explication de l'usage de script, c'est un formulaire d'upload pour une image (n'importe quel format, je fait mes test avec un jpg) et qui apres traitement copie deux image (dont une symétrique verticalement) dans deux repertoire distinct au format png...
merci à omega2 qui m'a (encore) aidé!

Code :
  1. <?php
  2. if (isset($_FILES['fichier'])) {
  3.     //debug
  4.     print_r($_FILES['fichier']);
  5.     // Variables récupérée par methode POST du formulaire
  6.     $nom = substr($_FILES['fichier']['name'],0,-4);
  7.     $type = $_FILES['fichier']['type'];
  8.     $taille = $_FILES['fichier']['size'];
  9.     $nom_tmp = $_FILES['fichier']['tmp_name'];
  10.     $sens =  $_POST['sens'];
  11.     //test de la taille du fichier
  12.     $MAX_SIZE  = 8388608;
  13.     if($taille > $MAX_SIZE){
  14.         $erreur = "Le fichier est trop volumineux.";
  15.     } else {
  16.         //test de l'existence d'un fichier portant le même nom
  17.         if(file_exists("gauche/".$nom."png" )){
  18.             $erreur = "Un fichier du même nom existe deja sur le serveur.";
  19.         }
  20.     }
  21.     if (!isset($erreur)) {
  22.         // verification du mimetype
  23.         $FILE_MIMES = array(
  24.             'image/pjpeg'=>"jpg",
  25.             'image/jpeg'=>"jpg",
  26.             'image/jpg'=>"jpg",
  27.             'image/png'=>"png",
  28.             'image/x-png'=>"png",
  29.             'image/gif'=>"gif",
  30.             'image/bmp'=>"bmp"
  31.         );
  32.         $type = $FILE_MIMES[$_FILES['fichier']['type']];
  33.         switch($type) {
  34.             case 'jpg': $image = ImageCreateFromJPEG($nom_tmp); break;
  35.             case 'png': $image = ImageCreateFromPNG($nom_tmp); break;
  36.             case 'gif': $image = ImageCreateFromGIF($nom_tmp); break;
  37.             case 'bmp': $image = ImageCreateFromWBMP($nom_tmp); break;
  38.             default: $erreur = "Type de fichier non reconnu."; break;
  39.         }
  40.         //ouverture de l'image
  41.         if(!isset($image)){
  42.             $erreur = "Impossible d'ouvrir l'image.";
  43.         } else {
  44.             $w = imagesx($image);
  45.             $h = imagesy($image);
  46.             $image_mirroir = imagecreatetruecolor($w,$h);
  47.             $vertical = false;
  48.             for($y=0;$y<$h;$y++) {
  49.                 for($x=0;$x<$w;$x++) {
  50.                     imagesetpixel($image_mirroir,$vertical?$x:$w-$x,$vertical?$h-$y:$y,imagecolorat($image,$x,$y));
  51.                 }
  52.             }
  53.             $erreur="";
  54.             if ($sens=="gauche" ) {
  55.                 if(imagepng($image,'gauche/'.$nom.'.png')) {
  56.                     $erreur .= '<br>Nous avons bien copié le fichier '.$_FILES['fichier']['name'].' dans gauche/'.$nom.'.png';
  57.                 }
  58.                 if(imagepng($image_mirroir,'droite/'.$nom.'.png')) {
  59.                     $erreur .= '<br>Nous avons bien copié le fichier '.$_FILES['fichier']['name'].' dans droite/'.$nom.'.png';
  60.                 }
  61.             } else {
  62.                 if(imagepng($image,'droite/'.$nom.'.png')) {
  63.                     $erreur .= '<br>Nous avons bien copié le fichier '.$_FILES['fichier']['name'].' dans droite/'.$nom.'.png';
  64.                 }
  65.                 if(imagepng($image_mirroir,'gauche/'.$nom.'.png')) {
  66.                     $erreur .= '<br>Nous avons bien copié le fichier '.$_FILES['fichier']['name'].' dans gauche/'.$nom.'.png';
  67.                 }
  68.             }
  69.         }
  70.     }
  71. echo $erreur;
  72. }
  73. ?>
  74. <form action="upload.php" method="post" ENCTYPE="multipart/form-data" >
  75. <input type="file" name="fichier">
  76. <select name="sens">
  77. <option>gauche</option>
  78. <option>droite</option>
  79. </select>
  80. <input type="submit" value="uploader">
  81. </form>


Message édité par mechkurt le 16-03-2006 à 16:39:08

---------------
D3
mood
Publicité
Posté le 16-03-2006 à 11:40:50  profilanswer
 

n°1326684
Master p
My new cock ring :D
Posté le 16-03-2006 à 14:12:04  profilanswer
 

l. 54 : if (sens=="gauche" )
$sens peut-être [:dawa]


---------------
HAHAHA I M USING TEH INTERNET
n°1326778
mechkurt
Posté le 16-03-2006 à 15:30:50  profilanswer
 

putain quand on a le nez dans le guidon, j'essaye ca de suite...
merci  :jap:


---------------
D3
n°1326782
mechkurt
Posté le 16-03-2006 à 15:37:06  profilanswer
 

non c'est pas ca (mais maintenant il me met les erreurs correspondant au bonne ligne ;) )
donc l'output raw de $image
puis Warning: copy(1): failed to open stream: No such file or directory in /var/www/free.fr/3/7/mbillonlanfrey/test_upload/upload.php on line 55
ensuite l'output raw de $image_mirroir
puis Warning: copy(1): failed to open stream: No such file or directory in /var/www/free.fr/3/7/mbillonlanfrey/test_upload/upload.php on line 58
 
je suis noob en librairie GD, qq'un peut m'aider [:ruisseau de larmes]


---------------
D3
n°1326795
omega2
Posté le 16-03-2006 à 16:03:55  profilanswer
 

Il a l'air de te dire que les fichiers ou les dossiers que t'essaye d'utiliser n'existent pas.
Donc débugage de base :  

  • vérifier ce qu'on lui demande comme fichier (un echo du texte fournis à la fonction)
  • vérifier que le fichier existe bien à l'endroit correspondant.

n°1326799
mechkurt
Posté le 16-03-2006 à 16:14:37  profilanswer
 

ben c'est un fichier uploadé (regarde le code), l'upload fonctionne (je fait un print_r($_FILES[]); qui fonctionne), je pense que toutes les autres étapes fonctionne puisque j'ai en RAW les deux fichiers (je poste pas le code source qui est enorme mais j'ai deux fichiers qui commence par ‰PNG)
c'est la copie dans qui merde, sans doute qu'on fait pas comme ca, mais la, je suis dans la doc de copy et imagepng, pourtant je ne vois pas mon erreur...
 
bon ma gestion d'erreur n'est pas top mais si sa foirait ailleur ca se verait je pense...


---------------
D3
n°1326806
omega2
Posté le 16-03-2006 à 16:27:18  profilanswer
 

ok, je pige mieux ce que t'as fait.
Alors voilà ce qu'il se passe dans ton code :
Tu créé une image grace à gd.
Au moment de la sauver, tu utilises "imagepng()" ce qui est une bonne idée mais tu ne donne pas de nom de fichier donc "imagepng()" renvoie l'image au navigateur et en plus c'est le résultat d'"imagepng()" (donc un booléen) que tu utilises pour faire une copie de fichier à l'aide de "copy()". "copy()" recoit donc un booléen comme nom de fichier, un booléen en nombre, c'est 0 ou 1 ce qui donne ensuite "0" ou "1" comme chaine. "copy()" cherchera donc un fichier nomé "0" ou un fichier nomé "1" dans le répertoire courant. Il y a peu de chance qu'il le trouve.
 
 
Solution : ne pas utiliser "copy()" et donner un nom de fichier de destination à "imagepng()" comme indiqué dans la doc : http://fr2.php.net/manual/fr/function.imagepng.php


Message édité par omega2 le 16-03-2006 à 16:27:57
n°1326811
mechkurt
Posté le 16-03-2006 à 16:36:23  profilanswer
 

merci beaucoups, encore une fois omega2 me sauve la mise!
 
et moi faut que j'apprenne a mieux lire la doc (j'ai encore du mal avec les parametres optionnel type [, string] )
d'habitude je m'aide avec les exemples mais la aucun ne sortait dans un fichier, j'aurais dut aller voir les exemples de imagejpg ou imagegif, ca m'aurait surement aidé...
 
encore  :jap:


---------------
D3

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  upload & librairie GD (image miroir) [resolu]

 

Sujets relatifs
Problème avec mkdir et upload[résolu] Enregistrer page.php interpretté dans un variable
[Résolu] Fond du flash[javascript] affichage de l'iamge au survol de l'image
[RESOLU] Recuperer des champs de formulaire "inconnus"Calcul de la vitesse d'upload
[VBA] Msgbox image[résolu] Problème Session Bean Stateful et JSF sous RAD6
[Résolu] remplacer la valeur d'un attibut dans un doc[RESOLU] Header $_POST
Plus de sujets relatifs à : upload & librairie GD (image miroir) [resolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR