Gå til innhold

Hvordan hente ett random bilde og vise?


Anbefalte innlegg

Skrevet

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?

Videoannonse
Annonse
Skrevet

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" ;)

Skrevet
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...

Skrevet (endret)

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
Skrevet

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).

Skrevet (endret)

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
  • 2 år senere...
Skrevet

Hvis jeg skal ha browseren til å vise dagens bilde med en max oppløsning..

 

(For å ikke fylle hele browser ved store filer)

 

Hvordan blir koden da?

Skrevet (endret)

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
Skrevet

Det scriptet kjører jo random vær gang det kjører, det blir jo forskjellig bilde vær gang du åpner siden, han ville ha et bilde som sto der fast i en dag, før det så byttet neste dag ?

eller tar jeg feil nå ?

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...