Simppeli satunnaiskuvan näyttäjä, eli aina sivulle tultaessa hakee määrätystä kansioista satunnaisesti arvotun kuvan.
<?php //mo's image randomizer, hakee satunnaisen kuvan määrätystä hakemistosta $hakemisto_polku = "../.."; //hakemiston polku tähän $hakemisto_kahva = opendir($hakemisto_polku); //asetetaan hakemisto polku kahvaan $montako_kuvaa = 0; //laskuri muuttuja kuvien määrän laskemiseksi $tied_paatteet = array("jpg","gif","png"); //mitkä tiedostot hyväksytään //käydään kansion tiedostot läpi------------------------------ while ($tiedosto = readdir($hakemisto_kahva)) { //haetaan tiedosto nimestä tiedoston pääte $tied_paate = substr(strrchr($tiedosto, "."), 1); //käydään läpi tiedostojen päätteet foreach ($tied_paatteet as $paate) { //ja jos sattui olemaan kuva niin laitetaan se arrayhin if ($paate == strtolower($tied_paate)){ $kuvat_array[$montako_kuvaa] = $tiedosto; $montako_kuvaa++; } } } closedir($hakemisto_kahva); //tarkistus löytyikö niitä kuvia ollenkaan... if ($montako_kuvaa == 0) { echo "Ei ole kuvia"; }else{ $montako_kuvaa--; // vähennetään muuttujasta yksi, muuten satunnaisluku generoituisi liian isolta alueelta $s_luku = rand(0 , $montako_kuvaa); //haetaan satunnaisluku väliltä 0- montako kuvaa $naytettava_kuva = $hakemisto_polku.$kuvat_array[$s_luku]; //naytettävän kuvan hakeminen $alt_teksti = $kuvat_array[$s_luku]; //asetetaan alt teksti kuvan nimestä echo '<img src="'.$naytettava_kuva.'" alt="'.$alt_teksti.'" />'; //tulostetaan kuva } ?>
Oma versioni:
<?php function randomKuva ($polku = "kuvat/", $virhe = "error.jpg", $paatteet = array ("jpg", "jpeg", "gif", "png", "bmp")) { $tiedostot = glob ($polku ."*"); $kuvat = array (); if ($tiedostot[0] == "") return $virhe; else { foreach ($tiedostot as $nimi) { $split = explode (".", $nimi); if (in_array (strtolower ($split[count ($split)-1]), $paatteet)) $kuvat[] = $nimi; } if (count ($kuvat) == 0) return $virhe; else return $kuvat[rand(0, count ($kuvat)-1)]; } } //näyttää 10 satunnaiskuvaa for ($i = 0; $i < 10; $i++) echo "<img src=\"". randomKuva () ."\">"; ?>
Kummastakin koodista puuttuu img-tagin vaaditut width- ja height-määritteet :)
Ja tumpi: tuo glob() osaa hakea suoraan ne pelkät kuvatkin sieltä hakemistotsta:
ajv: ainoastaan alt ja src ovat vaadittuja (omasta versiostani ei alttia löydy, se ei ole koodin kannalta keskeinen asia). :)
Ja tietty onnistuu se tiedostojen haku globilla noinkin, itse valitsin tuollaisen ratkaisun, missä voi sallitut tiedostopäätteet määrittää (mielestäni) helpommin.
Noihin pitäisi lisätä vielä tarkistus kansioiden varalta (esim. kuvat/salakansio.jpg/ sotkee koko homman), jos sellaisia on tuonne ajatellut tunkea, omaani esim. näin:
... if (in_array (strtolower ($split[count ($split)-1]), $paatteet) && !is_dir ($nimi)) $kuvat[] = $nimi; ...
lainaus:
ajv: ainoastaan alt ja src ovat vaadittuja
katoppas, näinhän se onkin :)
lainaus:
katoppas, näinhän se onkin :)
Juu, välillä voi olla kyllä hyvä määrittää kuville mitat, esim. jos käyttää kuvia sivun elementtien asemoinnissa, jolloin sivu ei hajoa totaalisesti otettaessa kuvien näyttö pois päältä, selaimen pitäisi näyttää tyhjää kuvan mittojen verran.
Jos taas kuva 'leijuu' vapaasti tekstin seassa, on ehkä parempi jättää leveyden sekä korkeuden määrittely pois, jolloin ei näytetä mitään tyhjyyttä ammoittavaa laatikkoa tällaisessa tilanteessa. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.