Gå til innhold

Hvordan hente ett random bilde og vise?


Anbefalte innlegg

Heisann!

 

Skal vi si jeg har en mappe på en server med en del bilder og vitser. Jeg vil ha en side som plukker ut en ting en dag, helt random. Liksom; dagens vits, dagens tegnestripe, dagens bilde. Også neste dag selfølgelig ett annet bilde. Det er vel best og gjøre dette i php? Hvordan...

Og med det samme, noen som kan ta en titt her?

Lenke til kommentar
Videoannonse
Annonse
det spørs litt hva du har tilgjengelig. har du f.eks en katalog med diverse tegneserie gif's?

 

det er en smal sak å hente ut et tilfeldig element fra en liste med tilgjengelige elementer. det være seg bilder eller tekst.

 

 

... og jeg svarte "der" ;)

Hvis jeg har en .txt fil full av vitser hvordan skal jeg sortere dem?

Bør jeg ha en .txt fil til hver vits? Hvordan blir koden da? Slik at den første henter ut random bilde/vits/stripe for så og vise den...

Lenke til kommentar

Random bilde kan løses slik: (hvis du har alle bilder i samme mappe)

<?php
function directory($dir, $type) {
   $handle = @opendir($dir);
   if (!$handle) {
      return false;
   }

   $res = array();
   while ($file = readdir($handle)) {
      // se om $file er en mappe
      if(!is_dir($file))
      {
         // kun vise bilder
         if (in_array(substr($file, strrpos($file, '.')), $type)) {
           $res[$dir.$file] = $file;
         }
      }
   }
   closedir($handle);
   return $res;
}

/*for å få noe brukbart ut av det hent funktionen med denne linja:*/
$img = directory('./bilder/', array('.gif', '.png', '.jpg', '.gif'));

$bilde=array_rand($img);
echo "<img src=\"$bilde\">";
?>

 

Edit:

Hmm.. nå ser jeg at du vil ha dagens bilde. Det jeg gjør er å ta ett random-bilde hver gang siden lastes...

Endret av ZoRaC
Lenke til kommentar

Tok et søk i forumet og fant denne:

http://forum.hardware.no/index.php?showtop...27621&hl=dagens

 

Der har "b-urn" en kode som gir ut random data (jeg har redigert den litt):

<?php
$file=fopen('linker.txt',"r");
$i=0;
       while (!feof($file)) {
           $read = fgets($file, 4096);
       $str_Links[$i]=$read;
       ++$i;
       }

echo($str_Links[getArrayPosition()]);

function getArrayPosition()
{    
    global $str_Links;
    $date_array = getdate();
    $intDayOfYear = $date_array[yday];

    return modulo($intDayOfYear,count($str_Links));
}

function modulo($x,$y) {return ($x - floor($x/$y)*$y);}

?>

 

Så lager du "linker.txt" med en link på hver linje.

Da får du en ny link pr dag.

 

Samme kan jo også gjøres med bilde.

Legg bildene inn i ett .txt dokument eller bruk koden i mitt forrige innlegg og hent ut "dagens bilde" (det krever som sagt at bildene ligger i samme mappe).

Lenke til kommentar

Grei sak som viser random vits, hver vits går på en linje i vitse-fila:

 

<?php
// Hver linje er en vits og puttes i arrayet $vitser
$vitser = file("vitser.txt");
if($vitser !== false && is_array($vitser) && count($vitser) > 0)
{
   // Henter en random index til arrayet og viser frem en random vits
   /*srand((float) microtime() * 10000000);
   $i = array_rand($vitser);*/
   
   // Henter neste index i array fra dag til dag og begynner på nytt når siste er nådd
   $i = date("z") % count($vitser);
   echo "<p style=\"background-color: #ffffe1; padding: 1em;\">".$vitser[$i]."</p>";
}
else
{
   // Ingen vitser funnet
   echo "<p style=\"background-color: #ffffe1; padding: 1em;\">What a joke!</p>";
}
?>

 

Edit: hmm, tenkte ikke på at du skulle ha en unik vits om dagen, denne vil gi deg random vits hver gang man besøker siden :blush:

 

Edit: endret det slik at den viser forskjellig vits fra dag til dag.

 

Du kan vel så og si gjøre det samme med bilder du har og, men da må du liste bildene med opendir, readdir eller hva man bruker inni et array og bruke metoden over på samme måte.

Endret av FuLu
Lenke til kommentar
  • 2 år senere...

Vist du skal ha ett bilde inni en ramme eller noe kan du bruke prosenter

til det, bilde er da like stort men blir forminsket..

 

<?php

/** BILDER **/
$bilde[0] = "bilde1.jpg";
$bilde[1] = "bilde2.jpg";
$bilde[2] = "bilde3.jpg";
$bilde[3] = "bilde4.jpg";
$bilde[4] = "bilde5.jpg";
// Også videre nedover med $bilde[TALL] = "bildenavn.filetternavn";

srand((float) microtime() * 10000000);
// Finner ut hvor mange bilder du har:
$count = count($bilde);
// Velger ut bilde:
$random = array_rand($bilde, $count);
$random = $bilde[$random[0]];

// Sender ut bildet til websiden
echo "<img src='$random' style='width: 100%; length: 100%;' />";
?>

 

Du kan selfølgelig også endre prosentene eller du kan legge til feks. 200px

for og få en eksakt størrelse og ikke en størrelse ut i fra bildets opprinnelige størrelse..

 

EDIT: Har ikke testet det, blir ikke overasket vist det ikke funker....

Endret av goggen90
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...