Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: galeria - pod obrazkiem nazwa obrazka.jpg
Forum PHP.pl > Forum > Gotowe rozwiązania > Szukam
szymek001
Poszukuje jakiejś galeri tak żeby wrzucić do folderu index.php i od razu robiły ukłądało sie pololei (01,02...) i pod obrazkiem nazwa i rozmiar
np. 01.jpg
45 kb

Obrazki nie mają być miniaturami ( linkiem do dużych obrazków)
Lars
  1. <?php
  2. $directory='gal/'; # nazwa folderu ze zdjęciami
  3. foreach(glob($directory.'*.*') as $name) {
  4. echo '<a href="'.$name.'">'.$name.'</a><br>';
  5. $kb=filesize($name);
  6. $kb=$kb/1024;
  7. settype($kb, 'integer');
  8. echo $kb.' kB<br><br>';
  9. }
  10. ?>
szymek001
Dziękuje, zrobiłem
  1.  <?php
  2.  
  3. $directory='pliki/'; #
  4. foreach(glob($directory.'*.*') as $name) {
  5. echo '<img src="'.$name.'"><br>'.$name.'</img><br>';
  6. $kb=filesize($name);
  7. $kb=$kb/1024;
  8. settype($kb, 'integer');
  9. echo $kb.' kB<br><br>';
  10. }
  11. ?>


Ale jak zrobić
  1. <?php
  2.  
  3. $linia = 5; // liczba zdjec w jednym wierszu (w jednej linii obok siebie)
  4.  
  5. ?>


coś takiego, żeby w lini było 5 obrazków?
mike
Na oko może byc tak:
(pisane z palca)
  1. <?php
  2.  
  3. $directory='pliki/';
  4.  
  5. $linia = 5
  6.  
  7. $i = 1;
  8. echo '<table>';
  9. echo '<tr>';
  10. foreach( glob( $directory . '*.*' ) as $name )
  11. {
  12. echo '<td><img src="' . $name . '"><br>' . $name . '</img><br>';
  13. $kb = filesize( $name );
  14. $k b= $kb / 1024;
  15. settype( $kb, 'integer' );
  16. echo $kb . ' kB<br></td>';
  17. if( $i % $linia == 0 )
  18. {
  19. echo '</tr><tr>';
  20. }
  21. }
  22. echo '</tr>';
  23. echo '</table>';
  24. ?>
szymek001
nie działa, tzn strona jest biała sad.gif
mike
Fakt pomyliłem się (w piątej linii jest literówka, brak średnika).
Ale to nie zwalnie Cię z obowiązku prześledzenia kodu i nie nakazauje Ci bezmyślnie go wstawiać.

----added----
Żeby wychwytywać więcej błędów w czasie tworzenia pisz zawsze na początku skryptu:
  1. <?php
  2.  
  3. error_reporting( E_ALL );
  4. ini_set( 'display_errors', 1 );
  5.  
  6. // ...
  7.  
  8. ?>
szymek001
aha.. no ja nie znam sie na php sad.gif

PS. a co to daje że sie takie coś napisze??


Napisałem :


  1. <?php
  2.  
  3. error_reporting( E_ALL );
  4. ini_set( 'display_errors', 1 );
  5.  
  6. // ...
  7.  
  8. ?>
  9.  
  10.  
  11.  
  12.  
  13. <?php
  14.  
  15. $directory='pliki/';
  16.  
  17. $linia = 5;
  18.  
  19. $i = 1;
  20. echo '<table>';
  21. echo '<tr>';
  22. foreach( glob( $directory . '*.*' ) as $name )
  23. {
  24.     echo '<td><img src="' . $name . '"><br>' . $name . '</img><br>';
  25.     $kb = filesize( $name );
  26.     $k b= $kb / 1024;
  27.     settype( $kb, 'integer' );
  28.     echo $kb . ' kB<br></td>';
  29.     if( $i % $linia == 0 )
  30.     {
  31.         echo '</tr><tr>';
  32.     }
  33. }
  34. echo '</tr>';
  35. echo '</table>';
  36. ?>


ale dalej biało



może coś z tym:

  1. <?php
  2.  {
  3. echo '</tr><tr>';
  4. }
  5. }
  6. echo '</tr>';
  7. echo '</table>';
  8.  
  9. ?>
Guest
nie działa sad.gif
mike
Cytat(Guest @ 2006-01-13 14:12:24)
nie działa sad.gif

1. Wyłącz komputer;
2. Otwórz okno;
3. Wywal komputer;
4. Nie będzie problemu.

"Nie działa." - A co nam to mówi?
Zastanowiłeś się pisząc to? I co na podstawie tak szczegółowych informacji mamy Ci powiedzieć?
Chyba tylko:

Odp.: "Acha."
szymek001
może mu chodzi o to, że jest białoo i nic nie ma, bo jak zrobiłem


  1. <?php
  2.  
  3. error_reporting( E_ALL );
  4. ini_set( 'display_errors', 1 );
  5.  
  6. // ...
  7.  
  8. ?>
  9.  
  10.  
  11.  
  12.  
  13. <?php
  14.  
  15. $directory='pliki/';
  16.  
  17. $linia = 5;
  18.  
  19. $i = 1;
  20. echo '<table>';
  21. echo '<tr>';
  22. foreach( glob( $directory . '*.*' ) as $name )
  23. {
  24.     echo '<td><img src="' . $name . '"><br>' . $name . '</img><br>';
  25.     $kb = filesize( $name );
  26.     $k b= $kb / 1024;
  27.     settype( $kb, 'integer' );
  28.     echo $kb . ' kB<br></td>';
  29.     if( $i % $linia == 0 )
  30.     {
  31.         echo '</tr><tr>';
  32.     }
  33. }
  34. echo '</tr>';
  35. echo '</table>';
  36. ?>



http://cnk.goin.pl/1/ to jest biało.
maxib
działający:

  1. <?php
  2. error_reporting( E_ALL );
  3. ini_set( 'display_errors', 1 );
  4. // ...
  5. ?>
  6. <?php
  7. $directory='gal/';
  8. $linia = 5;
  9. $i = 1;
  10. echo '<table>';
  11. echo '<tr>';
  12. foreach( glob( $directory . '*.*' ) as $name )
  13. {
  14. echo '<td><img src="' . $name . '"><br>' . $name . '</img><br>';
  15. $kb = filesize( $name );
  16. $kb = $kb / 1024;
  17. settype( $kb, 'integer' );
  18. echo $kb . ' kB<br></td>';
  19. if( $i % $linia == 0 )
  20. {
  21. echo '</tr><tr>';
  22. }
  23. }
  24. echo '</tr>';
  25. echo '</table>';
  26. ?>
szymek001
http://cnk.goin.pl/1/

działa, ale nie do końca bo wszystko jest w jednej lini
crash
Na końcu pętli dodaj $i++
evilsoja
A czy da się zrobić aby na tej stronie były ułożone w lini miniatury - jako linki do obrazków ( podpisane orginalnymi wymiarami i wielkością obrazka i jego nazwą)
?

- albo - jeśli to powyżej niewypali - zrobić strone z linkami do tych obrazków - aby linki się automatycznie dodawały ?
crash
Da się.
evilsoja
tongue.gif

a czy mógłby mi ktoś pomóc zrobić taki kod ?

Proszę
crash
Pisz pisz, nie wstydź się. Pobierz ładnie listę plików (miniaturek), pobierz dane dotyczące oryginalnego pliku itd. Jak będziesz mieć problemy to pomożemy... Gotowców brak, przynajmniej tutaj.
free
Powyzszy kod dziala, ale nie wyswietla wszystkich rozmiarow plikow :
Cytat
pliki/TŁObg.gif
0 kB

pliki/back_button.gif
0 kB

pliki/kropki.gif
1 kB

pliki/separator.gif
0 kB

Dziwne bo czasem serwer /w moim przypadku lokalny krasnal/ jak nie wyswietla to wszystkiem pliki a tu wyswietla tylko 1 rozmiar pliku.

Skrypcik bylby bardziej praktyczny gdyby nie wyswietlal rozszerzenia. Co usunac w tym skrypcie?
W linii :
Kod
foreach( glob( $directory . '*.*' ) as $name )
usunelem .* ale nie pomoglo.
crash
Ehh... Korzystając z chwili wolnego czasu i Waszego lenistwa smile.gif

  1. <?php
  2.  
  3. function imgType( $name )
  4. {
  5.    # http://forum.php.pl/index.php?showtopic=24837&view=findpost&p=162585
  6. }
  7.  
  8. function resizeImage( $source, $max_x, $max_y, $save_image, $jpeg_quality = 100 )
  9. {
  10.    # http://forum.php.pl/index.php?showtopic=24837&view=findpost&p=162585
  11. }
  12.  
  13. function showFileSize( $size )
  14. {
  15.     $sizes = array( 'B', 'kB', 'MB', 'GB', 'TB' );
  16.     $pos   = 0;
  17.     
  18.     while( $size >= 1024)
  19.     {
  20.       $size /= 1024;
  21.         $pos++;
  22.     }
  23.  
  24.     return sprintf( '%.02f', $size ) . ' ' . $sizes[ $pos ];
  25. }
  26.  
  27. $dir = './img/'; // katalog z grafikami
  28. $min = './mini/'; // katalog na miniaturki
  29.  
  30. $minW = 120; // szerokość miniaturki
  31. $minH = 150; // wysokość miniaturki
  32.  
  33. $perLine = 4; // ilość grafik w linii
  34.      
  35. $file = array();
  36.  
  37. if( $dh = opendir( $dir ) )
  38. {
  39.    while( ( $file = readdir( $dh ) ) !== false )
  40.    {
  41.       if( !is_dir( $dir . $file ) )
  42.       {
  43.          if( !file_exists( $saveFile = $min . 'small_' . $file ) )
  44.          {
  45.             resizeImage( $dir . $file, $minW, $minH, $saveFile );
  46.          }
  47.          
  48.          $files[ $file ] = array(
  49.                                  'time' => filectime( $dir . $file ),
  50.                                  'size'   => showFileSize( filesize( $dir . $file ) )
  51.                                 );
  52.       }
  53.    }
  54.  
  55.    closedir( $dh );
  56. }
  57.  
  58. asort( $files );
  59.  
  60. ?>
  61. <style type="text/css">
  62.    body, td {
  63.       font: 12px Verdana;
  64.       text-align: center;
  65.       vertical-align: top;
  66.       white-space: nowrap;
  67.    }
  68.    img {
  69.       border: 0px;
  70.    }
  71. </style>
  72. <table>
  73.    <tr>
  74. <?php
  75.  
  76. $num = 0;
  77.  
  78. foreach( $files as $fileName => $fileInfo )
  79. {
  80.    if( ( $num % $perLine ) == 0 and ( $num > 0 ) )
  81.    {
  82.  
  83.    ?>
  84.    </tr>
  85.    <tr style="height: 5px;">
  86.    </tr>
  87.    <tr>
  88.    <?php
  89.  
  90.    }
  91.  
  92.    ?>
  93.       <td>
  94.          <i><?= $fileName; ?></i><br/>
  95.          <a href="<?= $dir . $fileName; ?>"><img src="<?= $min . 'small_' . $fileName; ?>" alt=""/></a><br/>
  96.          Rozmiar: <b><?= $fileInfo[ 'size' ]; ?></b><br/>
  97.          Dodano: <b><?= date( 'd/m/Y', $fileInfo[ 'time' ] ); ?></b>
  98.       </td>   
  99.    <?php
  100.    
  101.    $num++;
  102. }
  103.  
  104. ?>
  105.    </tr>
  106. </table>
evilsoja
U.u

Pięknie biggrin.gif Dziękuje ...

mam pytanko może troche retoryczne tongue.gif :
- Odrazek i jego miniaturka muszą mieć takie same nazwy ?
crash
Miniaturki generuje skrypt. Dla np. obraz.png minuaturka ma nazwę small_obraz.png
evilsoja
u mnie nie generuje miniaturki sad.gif
a nadalem prawa chmod 777 dla folderu mini
crash
Niech zgadnę: Skopiowałeś cały kod nie zastanawiając się nawet co oznaczają podane w nim linki?
evilsoja
Ajjj ... Przepraszam - myślałem że to link do tego tematu biggrin.gif

----------------------------------------

ok - posklejałem to - działa - Wielkie Dzięki winksmiley.jpg exclamation.gif
free
Te 2 linki sa takie sama. Jak to skleic ?
evilsoja
odnajdź w podanym linku funkcję
function imgType($name)
i wklej w jej miejsce
oraz
function resizeImage
i również całą wklej w należale miejsce winksmiley.jpg
free
Ok wstawilem i waskoczyl blad :

Warning: opendir(./img/): failed to open dir: Invalid argument in c:\usr\krasnal\www\a\galeria.php on line 111

Warning: asort() expects parameter 1 to be array, null given in c:\usr\krasnal\www\a\galeria.php on line 132

Warning: Invalid argument supplied for foreach() in c:\usr\krasnal\www\a\galeria.php on line 152
evilsoja
Działający :

  1. <?php
  2.  
  3. function imgType($name)
  4. {
  5.  if(substr($name, -4, 4) == '.jpg' || substr($name, -4, 4) == 'jpeg')
  6.  {
  7. return "IMAGETYPE_JPEG";
  8.  }
  9.  elseif(substr($name, -4, 4) == '.gif')
  10.  {
  11. return "IMAGETYPE_GIF";
  12.  }
  13.  elseif(substr($name, -4, 4) == '.png')
  14.  {
  15. return "IMAGETYPE_PNG";
  16.  }
  17. }
  18.  
  19. function resizeImage($source, $max_x, $max_y, $save_image, $jpeg_quality = 100)
  20. {
  21.  /*
  22. * source - obrazek jpeg
  23. * max_x - maksymalna szerokosc pomniejszonego obrazka
  24. * max_y - maksymalna dlugosc pomniejszonego obrazka
  25. * save_image - nazwa pliku do ktorego zostanie zapisany nowy obrazek
  26. * jpeg_quality - jakosc powstalego obrazu jpeg - jezeli bedzie inny to argument jest nie wazny (domyslnie 100)
  27. */
  28.  
  29. if(imgType($source) == "IMAGETYPE_JPEG")
  30. {
  31.  $img_src = imagecreatefromjpeg($source);
  32. }
  33. elseif(imgType($source) == "IMAGETYPE_GIF")
  34. {
  35.  $img_src = imagecreatefromgif($source);
  36. }
  37. elseif(imgType($source) == "IMAGETYPE_PNG")
  38. {
  39.  $img_src = imagecreatefrompng($source);
  40. }
  41. else
  42. {
  43.  die('Wrong filetype! Accepted images: JPG/JPEG, GIF, PNG');
  44. }
  45.  
  46.  $image_x = imagesx($img_src);
  47.  $image_y = imagesy($img_src);
  48.  if($image_x > $image_y) // Landscape
  49.  {
  50. $ratio_x = ($image_x > $max_x) ? $max_x/$image_x : 1;
  51. $ratio_y = $ratio_x;
  52. $move = 'y';
  53.  }
  54.  else // Portrait
  55.  {
  56. $ratio_y = ($image_y > $max_y) ? $max_y/$image_y : 1;
  57. $ratio_x = $ratio_y;
  58. $move = 'x';
  59.  }
  60. $new_x = $image_x*$ratio_x;
  61. $new_y = $image_y*$ratio_y;
  62.  
  63. $move_x = ($move == "x") ? ($max_x-$new_x)/: 0;
  64. $move_y = ($move == "y") ? ($max_y-$new_y)/: 0;
  65.  
  66. $new_img = imagecreatetruecolor($max_x, $max_y);
  67. $background = imagecolorallocate($new_img, 255, 255, 255);
  68. imagefill($new_img, 0, 0, $background);
  69. imagecopyresampled($new_img, $img_src, $move_x, $move_y, 0, 0, $new_x, $new_y, $image_x, $image_y);
  70.  
  71. if(imgType($save_image) == "IMAGETYPE_JPEG")
  72. {
  73.  imagejpeg($new_img, $save_image, 100);
  74. }
  75. elseif(imgType($save_image) == "IMAGETYPE_GIF")
  76. {
  77.  imagegif($new_img, $save_image);
  78. }
  79. elseif(imgType($save_image) == "IMAGETYPE_PNG")
  80. {
  81.  imagepng($new_img, $save_image);
  82. }
  83.  
  84.  echo '<img src="'.$save_image.'" border="1">';
  85. }
  86.  
  87. function showFileSize( $size )
  88. {
  89. $sizes = array( 'B', 'kB', 'MB', 'GB', 'TB' );
  90. $pos  = 0;
  91.  
  92. while( $size >= 1024)
  93. {
  94. $size /= 1024;
  95. $pos++;
  96. }
  97.  
  98. return sprintf( '%.02f', $size ) . ' ' . $sizes[ $pos ];
  99. }
  100.  
  101. $dir = './img/'; // katalog z grafikami
  102. $min = './mini/'; // katalog na miniaturki
  103.  
  104. $minW = 100; // szerokość miniaturki
  105. $minH = 100; // wysokość miniaturki
  106.  
  107. $perLine = 4; // ilość grafik w linii
  108.  
  109. $file = array();
  110.  
  111. if( $dh = opendir( $dir ) )
  112. {
  113.  while( ( $file = readdir( $dh ) ) !== false )
  114.  {
  115. if( !is_dir( $dir . $file ) )
  116. {
  117.  if( !file_exists( $saveFile = $min . 'small_' . $file ) )
  118.  {
  119. resizeImage( $dir . $file, $minW, $minH, $saveFile );
  120.  }
  121.  
  122.  $files[ $file ] = array(
  123.  'time' => filectime( $dir . $file ),
  124.  'size'  => showFileSize( filesize( $dir . $file ) )
  125. );
  126. }
  127.  }
  128.  
  129.  closedir( $dh );
  130. }
  131.  
  132. asort( $files );
  133.  
  134. ?>
  135. <style type="text/css">
  136.  body, td {
  137. font: 12px Verdana;
  138. text-align: center;
  139. vertical-align: top;
  140. white-space: nowrap;
  141.  }
  142.  img {
  143. border: 0px;
  144.  }
  145. </style>
  146. <table>
  147.  <tr>
  148. <?php
  149.  
  150. $num = 0;
  151.  
  152. foreach( $files as $fileName => $fileInfo )
  153. {
  154.  if( ( $num % $perLine ) == 0 and ( $num > 0 ) )
  155.  {
  156.  
  157.  ?>
  158.  </tr>
  159.  <tr style="height: 5px;">
  160.  </tr>
  161.  <tr>
  162.  <?php
  163.  
  164.  }
  165.  
  166.  ?>
  167. <td>
  168.  <i><?= $fileName; ?></i><br/>
  169.  <a target="_BLANK" href="<?= $dir . $fileName; ?>"><img src="<?= $min . 'small_' . $fileName; ?>" alt=""/></a><br/>
  170.  Rozmiar: <b><?= $fileInfo[ 'size' ]; ?></b><br/>
  171.  Dodano: <b><?= date( 'd/m/Y', $fileInfo[ 'time' ] ); ?></b>
  172. </td>  
  173.  <?php
  174.  
  175.  $num++;
  176. }
  177.  
  178. ?>
  179.  </tr>
  180. </table>
Lars
Cytat(free @ 2006-02-08 12:36:55)
Powyzszy kod dziala, ale nie wyswietla wszystkich rozmiarow plikow :
Cytat
pliki/TŁObg.gif
0 kB

pliki/back_button.gif
0 kB

pliki/kropki.gif
1 kB

pliki/separator.gif
0 kB

Dziwne bo czasem serwer /w moim przypadku lokalny krasnal/ jak nie wyswietla to wszystkiem pliki a tu wyswietla tylko 1 rozmiar pliku.

Skrypcik bylby bardziej praktyczny gdyby nie wyswietlal rozszerzenia. Co usunac w tym skrypcie?
W linii :
Kod
foreach( glob( $directory . '*.*' ) as $name )
usunelem .* ale nie pomoglo.

to jest normalne. filesize daje rozmiar w bajtach i to sie dzieli na 1024 aby uzyskac ile to kilobajtow. dałem settype($var, 'integer') aby stało sie to liczbą całkowitą (a nie pozostalo czyms takim 2,183928423972349 Rkingsmiley.png guitar.gif )

Pozdrawiam,
lars
zein
a ja mam lekkawy problem z tym

sami zobaczcie: http://www.ucz.tme.szczecin.pl/~zein/galeria.php

i mam pytanie czy raz utworzona galeria bedzie caly czas sie tworzyla? czy pozniej juz skrypt korzysta z istniejacych plikow??snitch.gif
kondorekk
szymek sprawdzales ten skrypt?
zein
no wlasie... biggrin.gif sprawdzil ktos... bo serio ciekawy jest


a moze ktos mi poleci jakis skrypt najlepiej taki ktory doslownie by wszystko zautmatyzowal...
chce wrzucic na ftp do katalogu z galeriami jpg ktore beda w folderach zarazem bedacych kategoriami i doslownie tworze na serwerze folder i wtedy skrpyt odrazu wyswietli link z wlasnie ta kategoria... jest taki skrypt gdzies??snitch.gif
szymek001
Crash dziękówka, wszystko działa, przejrzyście napisane, sam umiałem zmienić to co potrzebowałem smilingsmiley.gif
Jeszcze raz więkie THX

A co zrobić, by np. było po 15 obrazków na stronie i na dole linki next/back ?
żeby galeria miała kilka stron?
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-2024 Invision Power Services, Inc.