Traitement d'image

Répondre
jacque99
jacque99
Déconnecté
jacque
Bonjour tout le monde,
Au fait, j'ai deux scripts qui fonctionnent bien, la première :
En choisi une image via un formulaire, puis en redimensionne l'image et finalement en enregistre avec un nouveau nom saisie par l'utilisateur.
Le 2e script :
En prend une partie d'une image.
Ce que j'ai essayé de faire :
Modifier le 2e scripte pour me permettre de :
Choisir l'image via un formulaire
Prendre la partie d'image
Enregistrer l'image avec un nouveau nom saisi par l'utilisateur.
J'ai essayé plusieurs fois pour mélanger les deux scripts, mais je ss tout le temps bloqué.
Je suis à l'écoute de vos conseils
Merci
Voici mes scriptes

//**************************************************************************************Premier script
//****************************************index.php

  1. <html>
  2. <head></head>
  3. <body>
  4.    <!--On affiche le formulaire d'envoi d'une image-->
  5.    <center>
  6.    <br /><hr />
  7.  
  8.    <form method="post" enctype="multipart/form-data" action="upload.php">
  9.    <p>
  10.    
  11.    
  12.    
  13.     Le nom de l'image redimensionner avec 95 ,95
  14.     <input type="text" name="video"><br><br>
  15.    
  16.    
  17.    
  18.    <input type="file" name="fichier" size="30">
  19.    <input type="submit" name="upload" value="Uploader">
  20.    </p>
  21.    </form>
  22.    </center>
  23.    
  24. </body>
  25. </html>
  26.  
  27.  
  28. //****************************************upload.php
  29.  
  30. <?php
  31.  
  32.  
  33. $nomImage=$_POST['video'];  
  34.  
  35. if( isset($_POST['upload']) ) // si formulaire soumis
  36. {  
  37. $content_dir = 'upload/'; // dossier où sera déplacé le fichier
  38.  
  39. $tmp_file = $_FILES  
  40.  
  41. ['fichier']['tmp_name'];  
  42.  
  43. if( !is_uploaded_file($tmp_file) )  
  44. {  
  45. exit("Le fichier est introuvable");  
  46. }  
  47.  
  48. // on vérifie maintenant l'extension
  49. $type_file =  
  50.  
  51. $_FILES['fichier']['type'];  
  52.  
  53. if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'png') && !strstr($type_file, 'bmp') && !strstr($type_file,  
  54.  
  55. 'gif') )  
  56. {  
  57. exit("Le fichier n'est pas une image");  
  58. }  
  59.  
  60. // on copie le fichier dans le dossier de destination
  61.    
  62.    $ext = substr($_FILES['fichier']['name'],  
  63.  
  64. strrpos($_FILES['fichier']['name'], '.')); 
  65.  
  66.    $name_file = $nomImage.$ext; 
  67.    echo $name_file; 
  68.  
  69.  
  70.    //fonction pour changer les dimentions des fichiers
  71. function  
  72.  
  73. redimensionner($file, $maxwidth, $maxheight) {  
  74.  
  75. list($rawwidth, $rawheight, $type) = @getimagesize($file);  
  76.  
  77. if ($maxwidth < $rawwidth && $rawwidth >= $rawheight) {  
  78.  
  79. $width =  
  80.  
  81. $maxwidth;  
  82.  
  83. $height = ($width / $rawwidth) * $rawheight;  
  84.  
  85. }  
  86.  
  87. elseif ($maxheight < $rawheight && $rawheight >= $rawwidth) {  
  88.  
  89. $height = $maxheight;  
  90.  
  91. $width = ($height /  
  92.  
  93. $rawheight) * $rawwidth;  
  94.  
  95. }  
  96.  
  97. else {  
  98.  
  99. $height = $rawheight;  
  100.  
  101. $width = $rawwidth;  
  102.  
  103. }  
  104.  
  105. $imgbuffer = imagecreatetruecolor($width, $height);  
  106.  
  107. switch($type) {  
  108.  
  109. case 1: $image =  
  110.  
  111. imagecreatefromgif($file); break;  
  112.  
  113. case 2: $image = imagecreatefromjpeg($file); break;  
  114.  
  115. case 3: $image = imagecreatefrompng($file); break;  
  116.  
  117. case 4: $image =  
  118.  
  119. imagecreatefrombmp($file); break;  
  120.  
  121. default: exit("Tried to create thumbnail from$file: not a valid image");  
  122.  
  123. }  
  124.  
  125. if (!$image) exit("Image creation from$filefailed for an
  126.  
  127. unknown reason. Probably not a valid image.");  
  128.  
  129. else {  
  130.  
  131. imagecopyresampled($imgbuffer, $image, 0, 0, 0, 0, $width, $height, $rawwidth, $rawheight);  
  132.  
  133. imageinterlace  
  134.  
  135. ($imgbuffer);  
  136.  
  137. switch($type) { 
  138.  
  139.    
  140.    
  141.    
  142. case 1: $image = imagegif($imgbuffer, $file, 80); break;  
  143.  
  144. case 2: $image = imagejpeg($imgbuffer, $file, 80);  
  145.  
  146. break;  
  147.  
  148. case 3: $image = imagepng($imgbuffer, $file, 7); break;  
  149.  
  150.  
  151.  
  152. }  
  153.  
  154. }  
  155.  
  156. }  
  157.  
  158.  
  159. if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) )  
  160.  
  161. {  
  162.  
  163. exit("Nom de fichier non valide");  
  164.  
  165. }  
  166.  
  167.  
  168.  
  169. else if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )  
  170.  
  171. {  
  172.  
  173. exit("Impossible de copier le fichier dans$content_dir");  
  174.  
  175. }  
  176.  
  177. redimensionner($content_dir.$name_file,95,  
  178.  
  179. 95);  
  180.  
  181. }  
  182. ?> 


//***************************************************************************************Deuxième scripte : Prendre une partie de l'image
index.php

  1. <?php  
  2. function CroppedThumbnail($imgSrc,$thumbnail_width,$thumbnail_height) { //$imgSrc is a FILE - Returns an image resource.
  3. //getting the image dimensions
  4. list($width_orig, $height_orig) = getimagesize($imgSrc);  
  5. $myImage = imagecreatefrompng($imgSrc);  
  6. $ratio_orig = $width_orig/$height_orig;  
  7.  
  8. if ($thumbnail_width/$thumbnail_height > $ratio_orig) {  
  9. $new_height = $thumbnail_width/$ratio_orig;  
  10. $new_width = $thumbnail_width;  
  11. } else {  
  12. $new_width = $thumbnail_height*$ratio_orig;  
  13. $new_height = $thumbnail_height;  
  14. }  
  15.  
  16. $x_mid = $new_width/2; //horizontal middle
  17. $y_mid = $new_height/2; //vertical middle
  18.  
  19. $process = imagecreatetruecolor(round($new_width), round($new_height));  
  20.  
  21. imagecopyresampled($process, $myImage, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig);  
  22. $thumb = imagecreatetruecolor($thumbnail_width, $thumbnail_height);  
  23. imagecopyresampled($thumb, $process, 0, 0, ($x_mid-($thumbnail_width/2)), ($y_mid-($thumbnail_height/2)), $thumbnail_width, $thumbnail_height, $thumbnail_width,  
  24.  
  25. $thumbnail_height);  
  26.  
  27. imagedestroy($process);  
  28. imagedestroy($myImage);  
  29. return $thumb;  
  30. }  
  31.  
  32. //Create the thumbnail
  33. $newThumb = CroppedThumbnail("monImage.png",200,200);  
  34.  
  35. // And display the image...
  36. header('Content-type: image/jpeg');  
  37. imagejpeg($newThumb);  
  38. ?> 
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Merci d'utiliser le BB-Code.

Si tu ne sais pas ce que c'est, quand tu écris un message, juste au dessus du bouton "envoyer", il y a un lien "Le BB-Code", clic dessus, tu apprendras ainsi comment poster du code sur le forum tout en couleur.

En fait, il n'y a rien de plus fatiguant que de lire du code sans coloration syntaxique.
moogli
moogli
Déconnecté
Il en faut peu pour être heureux !!!!!
salut,

la deuxième fonction
1/ n'est utile qu'avec une image png!
2/n'enregistre pas une image sur le disque dur mais est faites pour l'afficher
3/ ton code indique l'affichage d'une image jpeg et non gif, heureusement que les navigateur ne s’arrête pas qu'a ça ;)

ta fonction redimensionner permet "juste" de faire une miniature de l'image. la fonction cropmachin permet de prendre qu'une partie.
pour l'avoir sur le disque dur, il te suffit d'utiliser le deuxième paramètre de imagepng.

pour la rendre utilisable avec d'autre type d'image il te faut faire la même chose qu'avec la fonction précédente.

Je te conseil de créer une classe pour faire tous ça (une méthode de redimensionnement pour chaque type, une méthode de "crop" pour chaque type d'image et deux trois méthode pour l'utilisation de tous ça).

@+
jacque99
jacque99
Déconnecté
jacque
Bonjour Moogli

Pour la deuxième fonction :
1.ça me suffit qu'elle soit compatible avec png.
2. exactement je voulais juste prendre une partie de l'image en l'enregistre après.
3. la fonction redimensionner je l'ai pas besoin, j'ai juste montré que je peux faire un upload via un formulaire et enregistre par la suite.
et pou le moment je cherche faire un upload via un formulaire, puis prendre une partie de l'image avec la fonction cropmachin , et enregistre l'image après.
je vais ressayer de remodifier mon code, car je suis débutant en programmation
moogli
moogli
Déconnecté
Il en faut peu pour être heureux !!!!!
donc regarde le deuxième paramétre de la fonction imagepng dans la doc :)

@+
jacque99
jacque99
Déconnecté
jacque
dans la doc ou dans google cé la meme réponse.
ta pas un lien stp?
moogli
moogli
Déconnecté
Il en faut peu pour être heureux !!!!!
Hé ben http://www.php.net/imagepng

Le pire c'est qu'il s'agit de l'utilisation faite dans la premiere fonction. Ceci me conduit a dire que tous ceci est du copier collé ?

@+
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Bretagne - php - Moto - Kit graphique