Wall posté le Samedi 9 juin 2007


générateur de miniatures


  1. <?php
  2.  
  3. /*on défini le répertoire où seront stockées les miniatures*/  
  4. $dir_thumbs = './thumbs';  
  5. /*on défini une variable $ratio qui vaudra 150 dans notre cas (150 pixels). En fait, pour nos miniatures, nous allons respecter le ratio de l'image originale, mais nous allons forcer sa taille à 150 pixels, soit en hauteur soit en largeur (tout dépend de l'orientation de notre image : paysage ou portrait)*/  
  6. $ratio = 50;  
  7. /*on définit le répertoire, ici . soit le répertoire courant (celui du script)*/  
  8. $dir = ".";  
  9. /*on ouvre le répertoire $dir*/  
  10. $dossier = opendir($dir);  
  11. /*on lit le contenu*/  
  12. while ($fichier = readdir ($dossier)) {  
  13. /*vérification de l'extension du fichier*/  
  14. $ext = explode (".", $fichier);  
  15. $nb_element_1 = count ($ext) -1;  
  16. /*si le fichier n'a pas une certaine extension on ne le met pas dans ta liste $tableau*/  
  17. if ((strtolower($ext[$nb_element_1]) == "jpg") || ($ext[$nb_element_1] == "gif") && ($fichier != "." && $fichier != ".." && $fichier != "close.gif")) {  
  18. /*on met la liste des fichiers retenus dans un tableau*/  
  19. $tableau[] = $fichier;  
  20. }  
  21. }  
  22. /*on ferme le dossier*/  
  23. closedir($dossier);  
  24. /*on trie les fichiers retenus par ordre alphabétique*/  
  25. sort($tableau);  
  26. /*on compte le nombre d'images*/  
  27. $nb_files = count($tableau);  
  28. if ($nb_files == 0) {  
  29. echo '<center><b>Aucune image.</b></center>';  
  30. exit;  
  31. }  
  32.  
  33. else {  
  34. /*on génère une miniature*/  
  35. for($i=0; $i < $debut + $nb_files; $i++)  
  36.  
  37. if ((isset($tableau[$i])) && (!file_exists($dir_thumbs.'/'.$tableau[$i]))) {  
  38. $mini = @getimagesize($tableau[$i]);  
  39. /*on teste le type de notre image : jpeg ou png*/  
  40. if ($mini[2] == 2 || $mini[2] == 3) {  
  41. /*si notre image est de type jpeg*/  
  42. if ($mini[2] == 2) {  
  43. /*on crée une image à partir de notre grande image à l'aide de la librairie GD*/  
  44. $src = imagecreatefromjpeg($dir.'/'.$tableau[$i]);  
  45. /*on teste si notre image est de type paysage ou portrait*/  
  46. if ($mini[0] > $mini[1]) {  
  47. $im = imagecreatetruecolor(round(($ratio/$mini[1])*$mini[0]), $ratio);  
  48. imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$mini[1])*$mini[0]), $ratio, $mini[0], $mini[1]);  
  49. }  
  50. else {  
  51. $im = imagecreatetruecolor($ratio, round(($ratio/$mini[0])*$mini[1]));  
  52. imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($mini[1]*($ratio/$mini[0])), $mini[0], $mini[1]);  
  53. }  
  54. /*on copie notre fichier généré dans le répertoire des miniatures*/  
  55. imagejpeg ($im, $dir_thumbs.'/'.$tableau[$i]);  
  56. }  
  57. elseif ($mini[2] == 3) {  
  58. $src = imagecreatefrompng($dir.'/'.$tableau[$i]);  
  59. if ($mini[0] > $mini[1]) {  
  60. $im = imagecreatetruecolor(round(($ratio/$mini[1])*$mini[0]), $ratio);  
  61. imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$mini[1])*$mini[0]), $ratio, $mini[0], $mini[1]);  
  62. }  
  63. else {  
  64. $im = imagecreatetruecolor($ratio, round(($ratio/$mini[0])*$mini[1]));  
  65. imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($mini[1]*($ratio/$mini[0])), $mini[0], $mini[1]);  
  66. }  
  67. imagepng ($im, $dir_thumbs.'/'.$tableau[$i]);  
  68. }  
  69. }  
  70. }  
  71. }  
  72.  
  73. ?> 

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Php - Breizh Blog