[Resolu] Redimensionner image avec haut et larg max

Redimensionner image avec haut et larg max [Resolu] - PHP - Programmation

Marsh Posté le 21-09-2009 à 17:19:28    

Bonsoir à tous,
Bon voila je sais ça doit etre super simple mais j'y arrive pas ca me fait n'importe quoi ...
Mon but est simple :
J'ai une image pour laquelle je récupère les dimensions (Width et Height)
A partir de la je veux faire des boucles de telle sorte qu'on obtienne une image ayant une largeur MAX de 485 et/ou une hauteur MAX de 400 :  
 
Le script ci-dessous est utilisé pour afficher les images avec fondu tournant en boucle... j'ai inclu du PHP dedans pour redimensionner les images en live mais ca marche pas :(
 

Code :
  1. <SCRIPT LANGUAGE="JavaScript">
  2. imgPath = new Array;
  3. imgWidth = new Array;
  4. imgHeight = new Array;
  5. SiClickGoTo = new Array;
  6. if (document.images)
  7. {
  8. <?php
  9. $query = "SELECT * FROM image WHERE tagged=1";
  10. $result = mysql_query($query);
  11. $i=0;
  12. while ($item = mysql_fetch_array($result))
  13. {
  14.  $images = $item['fichier'];
  15.  echo "i".$i." = new Image;\n";
  16.  echo "i".$i.".src = 'images/web/".$images."';\n";
  17.  echo "SiClickGoTo[".$i."] = \"#\";\n";
  18.  echo "imgPath[".$i."] = i".$i.".src;\n";
  19.  list($width, $height, $type, $attr) = getimagesize("images/web/$images" );
  20.  if ($width > 485)
  21.  {
  22.   $height = round(485 * $height / $width);
  23.   $width = 485;
  24.  }
  25.  if ($height > 400)
  26.  {
  27.   $width = round(400 * $width / $height);
  28.   $height = 400;
  29.  }
  30.  echo "i".$i.".width = '$width';\n";
  31.  echo "i".$i.".height = '$height';\n";
  32.  echo "imgWidth[".$i."] = i".$i.".width;\n";
  33.  echo "imgHeight[".$i."] = i".$i.".height;\n";
  34.  $i++;
  35. }
  36. ?>
  37. }
  38. a = 0;
  39. function ejs_img_fx(img)
  40. {
  41. if(img && img.filters && img.filters[0])
  42.  {
  43.  img.filters[0].apply();
  44.  img.filters[0].play();
  45.  }
  46. }
  47. function StartAnim()
  48. {
  49. if (document.images)
  50.  {
  51.  document.write('<?php echo "$h - $w - $h_n<br>"; ?><IMG HEIGHT=<?php echo $height; ?> WIDTH=<?php echo $width; ?> SRC="images/web/docpix000002.jpg" BORDER=0 ALT=Menu NAME=defil style="filter:progid:DXImageTransform.Microsoft.Fade(MaxSquare=100,Duration=1)">');
  52.  defilimg()
  53.  }
  54. else
  55.  {
  56.  document.write('<?php echo $h; ?><IMG HEIGHT=<?php echo $height; ?> WIDTH=<?php echo $width; ?> SRC="images/web/docpix000003.jpg" BORDER=0>')
  57.  }
  58. }
  59. function ImgDest()
  60. {
  61. document.location.href = SiClickGoTo[a-1];
  62. }
  63. function defilimg()
  64. {
  65. if (a == <?php echo $i; ?> )
  66.  {
  67.  a = 0;
  68.  }
  69. if (document.images)
  70.  {
  71.  ejs_img_fx(document.defil)
  72.  document.defil.src = imgPath[a];
  73.  document.defil.width = imgWidth[a];
  74.  document.defil.neight = imgHeight[a];
  75.  tempo3 = setTimeout("defilimg()",5000);
  76.  a++;
  77.  }
  78. }
  79. </SCRIPT>


 
Merci de votre aide ;)


Message édité par Odissine le 22-09-2009 à 14:07:08
Reply

Marsh Posté le 21-09-2009 à 17:19:28   

Reply

Marsh Posté le 21-09-2009 à 17:28:36    

c'est quoi le pb avec ton code? il marche pas?  
 
et sinon le redimensionnement d'images, c'est classique. google est ton ami.

Reply

Marsh Posté le 22-09-2009 à 10:55:53    

J'ai édité mon poste principal car j'ai placé le script Javascript entier pour analyse ... je pige pas ou se situe mon erreur :( ...
 
Les photos ont une dimension de 485 * 400 ... :s a croire qu'il ne fait pas le premier calcul de ma première boucle ... ou alors le script php est mal interprété dans le code Jscript :(
 
Merci par avance

Reply

Marsh Posté le 22-09-2009 à 11:02:49    

je comprends rien à ton pb. si tes photos font déja 485x400, qu'est -ce que tu veux que ton script fasse?

Reply

Marsh Posté le 22-09-2009 à 12:05:22    

Je vais tâcher de mieux m'exprimer :  
 
J'ai des images dans un repertoire (et enregistrer dans la base) qui ont une taille aléatoire (ex : 1600x1200 ou 680x485 ou 1200x1600 ...). Mon but est d'afficher par une animation de fondu les images que la requetes SELECT renvoi en redimenssionnant l'image de tel sorte qu'elle est une largeur max de 485 et une hauteur max de 400 .. (ex pour 1600x1200 > 485x363 ...)
Et la bizzarement l'image qui devrait apparaitre avec 485x363 s'affiche avec 485x400 ... en revanche celle de 1200x1600 s'affiche bien en 300x400
 
Ca parait plus clair ?

Reply

Marsh Posté le 22-09-2009 à 13:15:01    

c bcp plus clair, en effet.
 
et effectivement, c'est bizarre. tu peux mettre le code de ta page générée par le php?

Reply

Marsh Posté le 22-09-2009 à 14:03:27    

Voila le code generé :  
 

Code :
  1. <!-- DEBUT DU SCRIPT -->
  2. <SCRIPT LANGUAGE="JavaScript">
  3. imgPath = new Array;
  4. imgWidth = new Array;
  5. imgHeight = new Array;
  6. SiClickGoTo = new Array;
  7. if (document.images)
  8. {
  9. i0 = new Image;
  10. i0.src = 'images/web/docpix000003.jpg';
  11. SiClickGoTo[0] = "#";
  12. imgPath[0] = i0.src;
  13. i0.width = '485';
  14. i0.height = '363';
  15. imgWidth[0] = i0.width;
  16. imgHeight[0] = i0.height;
  17. i1 = new Image;
  18. i1.src = 'images/web/docpix000002.jpg';
  19. SiClickGoTo[1] = "#";
  20. imgPath[1] = i1.src;
  21. i1.width = '485';
  22. i1.height = '364';
  23. imgWidth[1] = i1.width;
  24. imgHeight[1] = i1.height;
  25. i2 = new Image;
  26. i2.src = 'images/web/docpix000005.jpg';
  27. SiClickGoTo[2] = "#";
  28. imgPath[2] = i2.src;
  29. i2.width = '300';
  30. i2.height = '400';
  31. imgWidth[2] = i2.width;
  32. imgHeight[2] = i2.height;
  33. }
  34. a = 0;
  35. function ejs_img_fx(img)
  36. {
  37. if(img && img.filters && img.filters[0])
  38.  {
  39.  img.filters[0].apply();
  40.  img.filters[0].play();
  41.  }
  42. }
  43. function StartAnim()
  44. {
  45. if (document.images)
  46.  {
  47.  document.write('<IMG HEIGHT=400 WIDTH=300 SRC="images/web/docpix000002.jpg" BORDER=0 ALT=Menu NAME=defil style="filter:progid:DXImageTransform.Microsoft.Fade(MaxSquare=100,Duration=1)">');
  48.  defilimg()
  49.  }
  50. else
  51.  {
  52.  document.write('<IMG HEIGHT=400 WIDTH=300 SRC="images/web/docpix000003.jpg" BORDER=0>')
  53.  }
  54. }
  55. function ImgDest()
  56. {
  57. document.location.href = SiClickGoTo[a-1];
  58. }
  59. function defilimg()
  60. {
  61. if (a == 3)
  62.  {
  63.  a = 0;
  64.  }
  65. if (document.images)
  66.  {
  67.  ejs_img_fx(document.defil)
  68.  document.defil.src = imgPath[a];
  69.  document.defil.width = imgWidth[a];
  70.  document.defil.neight = imgHeight[a];
  71.  tempo3 = setTimeout("defilimg()",5000);
  72.  a++;
  73.  }
  74. }
  75. </SCRIPT>
  76. <!-- FIN DU SCRIPT -->
  77. </head>
  78. <body>
  79. <!-- DEBUT DU SCRIPT -->
  80. <SCRIPT LANGUAGE="JavaScript">
  81. StartAnim()
  82. </SCRIPT>


 
Cordialement

Reply

Marsh Posté le 22-09-2009 à 14:06:39    

Erf ... je viens de voir .... Quel couillon ;) j'avais mis dans le code "document.defil.neight = imgHeight[a];" ... faute de frappe ... c'était document.defil.height = imgHeight[a];
 
Ca marche maintenant ;)
Désole pour le post qui finalement n'est pas utile :s ...
Merci pataluc ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed