Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Losowy obrazek
dolmi2
post 20.12.2004, 21:31:46
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 13.01.2004

Ostrzeżenie: (0%)
-----


Mam taki oto skrypt powodujący wyświetlanie losowego obrazka z danego katalogu.

  1. <?php 
  2. $path = '.'; 
  3. $i = 0; 
  4. $imgDir = opendir ($path); 
  5.    while ( $file = readdir( $imgDir ) ) 
  6.    {     
  7.       $file_type = strrchr( $file, &#092;".\" ); 
  8.       $is_image = eregi( &#092;"jpg|gif\",$file_type ); 
  9.       if ( $file != '.' && $file != '..' && $is_image ) 
  10.       { $images[$i++] = $file; } 
  11.    } 
  12. closedir ($imgDir); 
  13. srand( (double) microtime()*1000000 ); 
  14. $image_name = $path . '/' . $images[rand( 0,sizeof( $images ) -)]; 
  15. $imgSize = GetImageSize( $image_name ); 
  16. if ( $i == 0 ) 
  17.    die(); 
  18. print ( &#092;"<img src=\"\" . $image_name . \"\"\" . $imgSize[3] . \" />n\" ); 
  19. ?>


Mój problem polega na tym, że nie wiem, jak zrobić, aby skrypt ten wyświetlał tylko pliki mniejsze niż na przykład 5kB. Czy jest jakiś sposób, aby to wymóc na skrypcie? Za radą znajomego zmieniłem 9. linijkę na
Kod
if ( $file != '.' && $file != '..' && $is_image && filesize($file)<5121)

ale niestety to nic nie dało. Proszę o pomoc.

Ten post edytował dolmi2 20.12.2004, 21:34:47
Go to the top of the page
+Quote Post
oldek
post 20.12.2004, 22:11:06
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 7.06.2004

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $image_name = $path . '/' . $images[rand( 0,sizeof( $images ) -)]; 
  3. $imgSize = GetImageSize( $image_name );
  4. ?>
zastąp przez
  1. <?php 
  2. $safety_count=0;
  3. do {
  4.   $image_name = $path . '/' . $images[rand( 0,sizeof( $images ) -)]; 
  5.   $imgSize = GetImageSize( $image_name ); 
  6. $safety_count++;
  7. } while (($imgSize>5120) AND ($safety_count<100));
  8. ?>

$safety_count jest na wypadek gdyby w katalogu były same duże pliki... worriedsmiley.gif
ponadto linie 16 i 17 wypadałoby przenieść ponad linię 13 ( ale ta uwaga to tylko tak w ramach czepiania się guitar.gif )

Ten post edytował oldek 21.12.2004, 00:29:05


--------------------
Czy demokracja to złudzenie ? Zanim powiesz 'tak', sprawdź.
Go to the top of the page
+Quote Post
dolmi2
post 21.12.2004, 07:59:42
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 13.01.2004

Ostrzeżenie: (0%)
-----


Dzięki za odpowiedź, ale niestety twoja propozycja nie działa. Może jakieś inne pomysły??
Go to the top of the page
+Quote Post
hwao
post 21.12.2004, 08:40:31
Post #4


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




  1. <?php
  2. $banery = file(&#092;"banery.txt\");
  3. $ile= &#092;"3\";
  4.  
  5. srand ((float)microtime()*1000000); 
  6. shuffle($banery); 
  7. for($i=0;$i<$ile;$i++){
  8.  list($adres,$img,$opis) = explode('|+|', $banery[$i]);
  9.  
  10.  echo &#092;"<a href=\"$adres\" target=\"_blank\" title=\"$opis\"><img src=\"baner/$img\" border=\"0\"></a><br />\";
  11. }
  12. ?>


Troche stare ale dziala :]
Tablica zamien na ta co robi Dir" title="Zobacz w manualu PHP" target="_manual() i wywal explod'y ;-)
Go to the top of the page
+Quote Post
dolmi2
post 21.12.2004, 09:23:18
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 13.01.2004

Ostrzeżenie: (0%)
-----


Więc problem polega na tym, że ja kompletnie nie znam sie na php, dlatego bardzo bym prosił najlepiej o gotową aarambo.gif propozycję.
Go to the top of the page
+Quote Post
oldek
post 21.12.2004, 09:24:53
Post #6





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 7.06.2004

Ostrzeżenie: (0%)
-----


faktycznie nie miało prawa zadziałać, bo GetImgSize nie podaje ... rozmiaru pliku angrysmiley.gif Na szczęście jest jeszcze funkcja filesize() która robi to co trzeba... Poniżej nowa wersja, mam nadzieję że już działająca:
  1. <?php
  2. $safety_count=0;
  3. do {
  4.   $image_name = $path . '/' . $images[rand( 0,sizeof( $images ) -)]; 
  5.   $imgSize_inBytes = filesize( $image_name ); 
  6.   $safety_count++;
  7. } while (($imgSize_inBytes>5120) AND ($safety_count<100));
  8. $imgSize = GetImageSize( $image_name ); 
  9. ?>
i nie sprawdzi się przysłowie 'do 3 razy sztuka' tiredsmiley.gif

edit: jeśliś taki początkujący, to jeszcze dodam: zastąp powyższym swój oryginalny kod
  1. <?php
  2. $image_name = $path . '/' . $images[rand( 0,sizeof( $images ) -)]; 
  3. $imgSize = GetImageSize( $image_name );
  4. ?>


Ten post edytował oldek 21.12.2004, 09:32:18


--------------------
Czy demokracja to złudzenie ? Zanim powiesz 'tak', sprawdź.
Go to the top of the page
+Quote Post
dolmi2
post 21.12.2004, 11:03:00
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 13.01.2004

Ostrzeżenie: (0%)
-----


Dzięki wielkie Oldek winksmiley.jpg , mój Rkingsmiley.png .

Cytat
edit: jeśliś taki początkujący, to jeszcze dodam

Aż taki początkujący nie jestem aarambo.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 23:17