T&R splet blog o spletnih storitvah. Razgaljamo tehnologijo!

reference spletnih strani
19th May

PHP – izdelava galerije – preprosta skripta za prikazovanje slik

Za zelo preprost projekt sem potreboval skripto, ki bi z določenega direktorija (imenika) pridobila vse slike in jih nato prikazala na strani. Nismo potrebovali ničesar drugega kot le to, zato sem se odločil spisati nekaj kratke in enostavnega, sedaj pa kodo delim z vami.

Koda, ki prebere iz določenega direktorija (in vseh pod-direktorijev le-tega) vse slike in vrne tabelo slik:

PHP:
  1. function populateArrayWithFolderContent($folder){
  2.     $folderReader = @opendir($folder);
  3.  
  4.     if($folderReader){
  5.         $listArray = array();
  6.         while(false !== ($folderEntry = readdir($folderReader))){
  7.             if (($folderEntry != '.' and $folderEntry != '..')){
  8.                 if (getimagesize($folder.'/'.$folderEntry) != false){
  9.                     $listArray[$folder][] = array('picture' => $folderEntry, 'folder' => $folder.'/'.$folderEntry);
  10.                 }else{
  11.                     $tempListArray = populateArrayWithFolderContent($folder.'/'.$folderEntry);
  12.                     if ($tempListArray !== false){
  13.                         $listArray = array_merge($listArray, $tempListArray);
  14.                     }
  15.                 }
  16.             }
  17.         }
  18.         return $listArray;
  19.     }else{
  20.         return false;
  21.     }
  22. }

Kratek opis funkcije:
Kreiramo upravjalnik za direktorij s katerim gremo čez vse njegove datoteke in pod-direktorije. Kreiramo zanko, ki se izteče ko v direktoriju preberemo vse vnose. Pri vsakem vnosu pregledamo ali je slika s pomočjo getimagesize PHP funkcije. V obratnem primeru, če je vnos direktorij rekurzivno pokličemo funkcijo in nato združimo dve tabeli (array, array_merge). Ko pregledamo vse vnose (imenike, slike) funkcija vrne false v primeru, da ni nobenega vnosa oz. tabelo (array) slik, ki smo jih našli.

Primer uporabe:

PHP:
  1. if ($pictures === false) {
  2.     'Trenutno ni dodanih nobenih slik';
  3. } else {
  4.     //foreach($pictures as $picture)
  5. }

Sama koda se zanaša le na pure PHP funkcije, torej lahko kodo kopirate kamorkoli želite na katerikoli strežnik. Preizkusite delovanje.

Dodatne informacije:

Večje in bolj napredne skripte:

Upam, da bo komu kdaj v pomoč.

Deli s skupnostjo:

  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks

Podobni članki:

  1. Preprosta skripta – kreiranje Excel datoteke iz PHP tabele/array
  2. Manipulacija slik s PHP-jem – cache slik – 304 Not Modified
  3. Javascript dodatki za prikaz oken oz. foto-galerije (ThickBox, Lightbox, GreyBox, Highslide)
  4. Dinamično kreiranje / Upravljanje slik
  5. Velikost slik pri vnosu v Google maps
  6. Primerjava JPG, GIF in PNG formatov slik za internet
  7. Iskalnikom in uporabnikom prijazni URL-ji (User – SEO freindly URL – Apache, IIS)
  8. PHP funkcije v Javascript jeziku – isset
  9. PHP – Konvertiranje datotek CP1250, UTF-8 – iconv
  10. PHP – izpis podatkov – dump – razhroščevanje – debugiranje

7x komentirano na “PHP – izdelava galerije – preprosta skripta za prikazovanje slik”

  1. Cobra je napisal:

    Kako bi pa recimo dobil size slike v kB ali v večjih enotah? Vem da z funkcijo filesize () dobiš velikost ampak le v bitih..

  2. Carli je napisal:

    BTW: Ko si enkrat na PHP5 uporabiš scandir in je življenje lažje ... :D

  3. gasper_k je napisal:

    hvala za omembo. Moj nick je sicer fatg, ampak nič hudega :)

  4. Roky je napisal:

    gasper_k oz. fatg: Sorry, pozna ura.

    carli: ja, sam pol je PHP5 limited.

    Cobra:

    PHP:
    1. <?php
    2. function format_size($size, $round = 0) {
    3.     //Size must be bytes!
    4.     $sizes = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
    5.     for ($i=0; $size> 1024 && $i <count($sizes) - 1; $i++) $size /= 1024;
    6.     return round($size,$round).$sizes[$i];
    7. }
    8. ?>

    Vir: http://docs.php.net/filesize

  5. Cobra je napisal:

    Hvala ;)

  6. Carli je napisal:

    @Roky: Imaš prav, ampak je že zadnji čas, da se preide na PHP5.

  7. Roky je napisal:

    Jap, goPHP5.org :)
    Cobra: Np, z veseljem.

Dodaj komentar