Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Galeria zdjęć.
Forum PHP.pl > Forum > Przedszkole
pb17
PLIK index.php
  1. <?php
  2. ini_set('display_errors', 1);
  3. ?>
  4. <?php
  5.  
  6.  
  7. // funkcja pokazuje katalogi
  8. function show_img_folders()
  9. {
  10. $od = opendir('./');
  11. while(false !== ($img_dir = readdir($od)))
  12. {
  13. if($img_dir!='.' && $img_dir!='..')
  14. if(is_dir($img_dir)) echo '<a href="?dir='.$img_dir.'">'.$img_dir.'</a><br />';
  15. }
  16. }
  17.  
  18. // funkcja pobiera obrazki z katalogu
  19. function get_images($dir)
  20. {
  21. // tablica z roszerzeniami ktore bedzie obslugiwac nasza galeria
  22. $extensions = array('jpg','jpeg');
  23.  
  24. // ladujemy obrazki
  25. $od = opendir($dir);
  26. while(false !== ($image = readdir($od)))
  27. {
  28. if($image != '.' && $image != '..')
  29. {
  30. $ext = explode('.', $image);
  31. if(in_array(strtolower($ext[1]), $extensions)) // sprawdzamy rozszerzenie
  32. $images[] = $image;
  33. }
  34. }
  35. return $images;
  36. }
  37.  
  38. if(isset($_GET['dir'])) // sprawdzamy czy ustawiono zmienna $_GET
  39. {
  40. if(is_dir($_GET['dir'])) // sprawdzamy czy istnieje katalog
  41. {
  42. $dir = $_GET['dir'].'/'; // katalog z fotkami
  43. $images = get_images($dir); // pobieramy do zmiennej nazwy obrazkow
  44.  
  45. $col = 4; // ilosc kolumn obrazkow
  46.  
  47. // sprawdzamy czy tablica zawiera jakies nazwy obrazkow
  48.  
  49. $up = (dirname("../"));
  50. if(count($images) == 0) die('Nie znaleziono plikow graficznych.<br />'."<a href='$up'>Wstecz</a>");
  51.  
  52. // wyswietlamy wszystko
  53.  
  54. echo "<a href='$up'>Wstecz</a>";
  55. echo '<table align="center" style="border: 1px solid #000000">
  56. <tr><td colspan="'.$col.'"></td><tr>';
  57. foreach($images as $img)
  58. {
  59. echo '<td align="center"><table><tr><td valign="top" align="center"><a href="'.$dir.$img.'" target="_blank"><img src="graph.php?img_name='.$dir.$img.'" border="0"></a></td></tr><tr><td align="center"></td></tr></table>';
  60. $i++;
  61. if($i==$col) // jesli $i = liczbie kolumn, tworzymy nowy wiersz
  62. {
  63. $i=0;
  64. echo '</tr><tr>';
  65. }
  66. }
  67. } 
  68. else echo 'Katalog nie istnieje';
  69. }
  70. else show_img_folders(); // pokazujemy katalogi
  71. ?>


PLIK graph.php
  1. <?php
  2. // File and new size
  3. $filename = $_GET['img_name'];
  4. $percent = 0.15;
  5.  
  6. // Content type
  7. header('Content-type: image/jpeg');
  8.  
  9. // Get new sizes
  10. list($width, $height) = getimagesize($filename);
  11. $newwidth = $width * $percent;
  12. $newheight = $height * $percent;
  13.  
  14. // Load
  15. $source = imagecreatefromjpeg($filename);
  16. $thumb = imagecreatetruecolor($newwidth, $newheight);
  17.  
  18. // Resize
  19. imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  20.  
  21. // Output
  22. imagejpeg($thumb);
  23. ?>


Cześć powyższy skrypt czyta foldery ze zdjęciami, po wejściu wyświetla miniatury, niestety są one tworzone w locie. Czytałem, że przy dużej ilości zdjęć galeria obciąża bardzo serwer i mam taką prośbę odnośnie tego, czy mógłby ktoś przerobić ten skrypt aby zapisywał miniatury do podfolderu images z przedroskiem th_ i wyświetlał je.

Do tej pory udało mi się zapisać miniatury do folderu images z przedrostkiem, nie wiem czy to jest najlepszy sposób, na inny nie wpadłem, jeżeli macie jakieś propozycje to bardzo proszę. Natomiast nie mam pojęcia jak linkom przypisać miniatury ;/
PLIK graph.php
  1. <?php
  2. // File and new size
  3. $filename = $_GET['img_name'];
  4. $percent = 0.15;
  5.  
  6. // Content type
  7. header('Content-type: image/jpeg');
  8.  
  9. // Get new sizes
  10. list($width, $height) = getimagesize($filename);
  11. $newwidth = $width * $percent;
  12. $newheight = $height * $percent;
  13.  
  14. // Load
  15. $source = imagecreatefromjpeg($filename);
  16. $thumb = imagecreatetruecolor($newwidth, $newheight);
  17.  
  18. // Resize
  19. imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  20.  
  21. // Output
  22. $file = explode("/", $filename);
  23. $prefix = 'images/th_images/'.'th_'.$file[1];
  24. imagejpeg($thumb, $prefix, 85);
  25. ?>


nikt nie ma pomysłu?
wipo
Skoro miniaturki juz masz no to :
Kod
echo '<td align="center"><table><tr><td valign="top" align="center">
<a href="'.$dir.$img.'" target="_blank"><img src="/okreslony kataloh/th_'.$img.'" border="0"></a>

lub inny sposób (zależny od tego jak i gdzie zapisujesz pliki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.