Avatar billede mlybech Nybegynder
23. marts 2005 - 14:26 Der er 41 kommentarer og
1 løsning

Billedskift i mappe

Hey... Står lige og mangler et script som kan skifte mellem nogle billeder der ligger i en mappe? Dem jeg har fundet, er hvor man selv skal skrive billedernes navne og det tager ligesom lang tid da jeg har mange...

Håber der er nogle der kan hjælpe
Avatar billede coderdk Praktikant
23. marts 2005 - 17:14 #1
Jeg forstår ikke helt hvad du vil... Skal det skifte automatisk? Ud fra hvilke kriterier? Tilfældigt ved hvert reload? Skal man selv vælge fra en liste? Eller noget helt andet?
Avatar billede mlybech Nybegynder
23. marts 2005 - 18:19 #2
Jeps den skal skifte automatisk efter f.eks. 3 sekunder og det skal bare være tilfældigt.... En form for slideshow....
Avatar billede coderdk Praktikant
23. marts 2005 - 18:24 #3
Ingen garanti for at folk ikke ser det samme billede, det kunne du måske omgå med sessions...

<?php

  $files = glob( "mappe/*.jpg" );
  shuffle( $files );
  $billede = "mappe/" . $files[0];

?>
<html>
  <head>
  <meta http-equiv="refresh" content="3;URL=<?= $_SERVER['PHP_SELF'] ?>" />
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  <title>Tilfældigt billede</title>
  </head>
  <body>
    <img src="<?= $billede ?>" alt="" />
  </body>
</html>
Avatar billede mlybech Nybegynder
23. marts 2005 - 18:33 #4
Kan ikke få det til at virke.... Det eneste jeg skal ændre er det ikke selve mappen?
Avatar billede coderdk Praktikant
23. marts 2005 - 19:54 #5
Jo, det kræver også at dine filer hedder noget med .jpg i enden (det er ikke det samme som .JPG)...
Hvis scriptet ligger i /home/ditnavn/public_html og mappen er /home/ditnavn/public_html/billeder skal du blot ændre "mappe" de to steder til "billeder"
Avatar billede mlybech Nybegynder
23. marts 2005 - 22:11 #6
Har fået det til at virke... Men ville ikke have den til at refreshe men bare skifte... da den ellers skal til at uploade hver gang...
Avatar billede mlybech Nybegynder
23. marts 2005 - 22:13 #7
skal jeg ikke sætte alt="" til noget?
Avatar billede coderdk Praktikant
23. marts 2005 - 22:26 #8
uploade?

nej alt="" er alternativ teksten som vises hvis billedet ikke kan vises...
Avatar billede mlybech Nybegynder
23. marts 2005 - 22:27 #9
Okay har fået det til at virke som det skal men jeg vil ikke sige det er tilfældigt... Den skfiter mellem de 3 første billeder der ligger i en mappe, hvor der ligger 200 billeder... hmmm?
Avatar billede mlybech Nybegynder
23. marts 2005 - 22:28 #10
Avatar billede coderdk Praktikant
23. marts 2005 - 22:29 #11
Det burde være helt tilfældige. Prøv for sjov dette, der viser hvilke filer den har valgt:

<?php

  $files = glob( "mappe/*.jpg" );
  shuffle( $files );
  $billede = "mappe/" . $files[0];

?>
<html>
  <head>
  <meta http-equiv="refresh" content="3;URL=<?= $_SERVER['PHP_SELF'] ?>" />
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  <title>Tilfældigt billede</title>
  </head>
  <body>
    <img src="<?= $billede ?>" alt="" />
    <pre><? var_dump( $files ) ?></pre>
  </body>
</html>
Avatar billede mlybech Nybegynder
23. marts 2005 - 22:41 #12
se lige... :D
Avatar billede mlybech Nybegynder
23. marts 2005 - 22:41 #13
Det er vidst det man kalder tilfældigt :D
Avatar billede coderdk Praktikant
23. marts 2005 - 22:42 #14
Den finder kun 3 billeder - Der *er* kun 3 billeder der matcher "mappe/*.jpg" er du sikker på de andre ikke hedder *.JPG eller lign?
Avatar billede mlybech Nybegynder
23. marts 2005 - 22:44 #15
Avatar billede coderdk Praktikant
23. marts 2005 - 22:52 #16
Jeg kan ikke få den til at opføre sig som dit script...
Prøv lige for sjov at smide index.php ind her:

http://www.lybech.1go.dk/hjemmeside/galleri/18-03-05/

og lav den om til:

<?php

  $files = glob( "images/*.jpg" );
  shuffle( $files );
  $billede = $files[0];

?>
<html>
  <head>
  <meta http-equiv="refresh" content="3;URL=<?= $_SERVER['PHP_SELF'] ?>" />
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  <title>Tilfældigt billede</title>
  </head>
  <body>
    <img src="<?= $billede ?>" alt="" />
    <pre><? var_dump( $files ) ?></pre>
  </body>
</html>
Avatar billede mlybech Nybegynder
23. marts 2005 - 22:55 #17
Okay nu virker den...... Hvordan gør jeg så, sådan at billedet der vises kun er i 50% i højden og bredden?
Avatar billede coderdk Praktikant
23. marts 2005 - 22:56 #18
Uhm, dit script finder disse tre:

  http://www.lybech.1go.dk/images/

Der er ikke noget i vejen med det ;)
Avatar billede coderdk Praktikant
23. marts 2005 - 22:59 #19
Du kunne prøve at sætte en højde/bredde på <img tag'et, eller finde højden/bredden og gøre det:

<?php

  $files = glob( "images/*.jpg" );
  shuffle( $files );
  $billede = $files[0];
  list( $w, $h, $t, $attr ) = getimagesize( $billede );

?>
<html>
  <head>
  <meta http-equiv="refresh" content="3;URL=<?= $_SERVER['PHP_SELF'] ?>" />
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  <title>Tilfældigt billede</title>
  </head>
  <body>
    <img src="<?= $billede ?>" <?= $attr ?> alt="" />
    <pre><? var_dump( $files ) ?></pre>
  </body>
</html>
Avatar billede mlybech Nybegynder
23. marts 2005 - 22:59 #20
Okay nu behøver jeg ikke ligge den i mappen hvor mappen med billerne ligger i... men den skifter ikke billede... se http://www.lybech.1go.dk/test.php
Avatar billede coderdk Praktikant
23. marts 2005 - 23:01 #21
Den skifter fint hos mig :)

Forresten sagde du jo 50% ;) så mit script:

<?php

  $files = glob( "images/*.jpg" );
  shuffle( $files );
  $billede = $files[0];
  list( $w, $h, $t, $attr ) = getimagesize( $billede );
  $w /= 2;
  $h /= 2;

?>
<html>
  <head>
  <meta http-equiv="refresh" content="3;URL=<?= $_SERVER['PHP_SELF'] ?>" />
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  <title>Tilfældigt billede</title>
  </head>
  <body>
    <img src="<?= $billede ?>" style="width: <?= $w ?>px; height: <?= $h ?>px;" alt="" />
    <pre><? var_dump( $files ) ?></pre>
  </body>
</html>
Avatar billede mlybech Nybegynder
23. marts 2005 - 23:05 #22
Jahhh.... nu virker det perle.... hvad hvis jeg vil have border="1!.. Og hvis jeg nu ligger den ind på en side opdatere den så hele siden eller er det kun billedet...
Avatar billede coderdk Praktikant
23. marts 2005 - 23:07 #23
Den vil opdatere hele siden. Hvis du kun vil have udskiftet billedet skal du enten smide det der i en iframe, eller bruge javascript til at skifte billedet ud i stedet.
Mht border=1, det sætter du bare i style'en for billedet -  <img src="<?= $billede ?>" style="width: <?= $w ?>px; height: <?= $h ?>px; border: 1px solid black;" alt="" /> f.eks.
Avatar billede coderdk Praktikant
23. marts 2005 - 23:14 #24
Prøv at se om dette virker.
To scripts!

vispic.php:

<?php

  header( 'Expires: 0' );
  $files = glob( "images/*.jpg" );
  shuffle( $files );
  $billede = $files[0];
  header( 'Content-Type: image/jpeg' );
  echo file_get_contents( $billede );

?>

Og der hvor billedet skal være på:

<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  <title>Tilfældigt billede</title>
  <script type="text/javascript" language="javascript">
      function chPic()
      {
        p = document.getElementById( "pic" );
        p.src = 'vispic.php?' + Math.floor( Math.random() * 999999999 );
      }
      window.onload = function ()
      {
        setTimeout( "chPic();", 3000 );
      }
  </script>
  </head>
  <body>
    <img id="pic" src="vispic.php" width="50%" height="50%" alt="">
  </body>
</html>
Avatar billede coderdk Praktikant
23. marts 2005 - 23:17 #25
Hmm javascriptet i den sidste burde nok være:

  <script type="text/javascript" language="javascript">
      function chPic()
      {
        p = document.getElementById( "pic" );
        p.src = 'vispic.php?' + Math.floor( Math.random() * 999999999 );
        setTimeout( "chPic();", 3000 );
      }
      window.onload = function ()
      {
        setTimeout( "chPic();", 3000 );
      }
  </script>

Ellers bliver den ikke ved at skifte ;)
Avatar billede mlybech Nybegynder
23. marts 2005 - 23:19 #26
Takker mange gange... Nu virker det perle..... Tak x 60
Avatar billede mlybech Nybegynder
23. marts 2005 - 23:23 #27
Okay nu virker det med rehresh også men nu er billedstørrelsen gal.... http://www.lybech.1go.dk/tester.php
Avatar billede coderdk Praktikant
23. marts 2005 - 23:23 #28
:) det med størrelsen virker vist ikke helt - har lige prøvet at teste på det...
Avatar billede mlybech Nybegynder
23. marts 2005 - 23:25 #29
Man kan ikke sige 50%... ved bare ikke hvorfor
Avatar billede mlybech Nybegynder
23. marts 2005 - 23:31 #30
Kan du løse problemet?
Avatar billede coderdk Praktikant
23. marts 2005 - 23:32 #31
Det er fordi den vil have at det skal være 50% af klientområdet... Jeg tror man er nødt til at resize billedet on-the-fly... Prøv at lave vispic.php om:

<?php

  header( 'Expires: 0' );
  $files = glob( "kanin/*.JPG" );
  shuffle( $files );
  $billede = $files[0];
  header( 'Content-Type: image/jpeg' );
  $im = imagecreatefromjpeg( $billede );
  $w = imagesx( $im );
  $h = imagesy( $im );
  $nw = ( $w / 2 );
  $nh = ( $h / 2 );
  $dst = imagecreatetruecolor( $nw, $nh );
  imagecopyresampled( $dst, $im, 0, 0, 0, 0, $nw, $nh, $w, $h );
  imagejpeg( $dst, null, 100 );
  imagedestroy( $dst );
  imagedestroy( $im );

?>

Så kan du også lave sjove ting som:

<?php

  header( 'Expires: 0' );
  $files = glob( "kanin/*.JPG" );
  shuffle( $files );
  $billede = $files[0];
  header( 'Content-Type: image/jpeg' );
  $im = imagecreatefromjpeg( $billede );
  $w = imagesx( $im );
  $h = imagesy( $im );
  $nw = ( $w / 2 );
  $nh = ( $h / 2 );
  $dst = imagecreatetruecolor( $nw, $nh );
  imagecopyresampled( $dst, $im, 0, 0, 0, 0, $nw, $nh, $w, $h );
  $white = imagecolorallocate( $dst, 255, 255, 255 );
  imagestring( $dst, 5, 5, 5, "mlybech", $white );
  imagejpeg( $dst, null, 100 );
  imagedestroy( $dst );
  imagedestroy( $im );

?>
Avatar billede coderdk Praktikant
23. marts 2005 - 23:33 #32
Ja, du skal lige lave "kanin/*.JPG" om til hvad du selv havde før ;) Jeg har bare lige testet lidt :)
Avatar billede mlybech Nybegynder
23. marts 2005 - 23:38 #33
Hey det er cool det der med navn... men det virker kun på det første billed også kan den ikke vise flere billeder....
Avatar billede coderdk Praktikant
23. marts 2005 - 23:40 #34
Mnæh, du skal bare huske at ændre alle vispic.php til sjov.php ;P
Avatar billede mlybech Nybegynder
23. marts 2005 - 23:41 #35
Nu hvor du jo er så godt i gang :D kan det så lade sig gøre at ændre skrifttype?
Avatar billede coderdk Praktikant
23. marts 2005 - 23:42 #36
Ja, kig på http://dk2.php.net/imagettftext i stedet for imagestring
Avatar billede mlybech Nybegynder
23. marts 2005 - 23:49 #37
er det så noget i stilen af:
<?php

  header( 'Expires: 0' );
  $files = glob( "hjemmeside/galleri/18-03-05/images/*.jpg" );
  shuffle( $files );
  $billede = $files[0];
  header( 'Content-Type: image/jpeg' );
  $im = imagecreatefromjpeg( $billede );
  $w = imagesx( $im );
  $h = imagesy( $im );
  $nw = ( $w / 2 );
  $nh = ( $h / 2 );
  $dst = imagecreatetruecolor( $nw, $nh );
  imagecopyresampled( $dst, $im, 0, 0, 0, 0, $nw, $nh, $w, $h );
  $white = imagecolorallocate( $dst, 255, 255, 255 );
  imagettftext($im, 20, 0, 10, 20, $black, "/front/verdana.ttf",
  "Testing... Omega: &amp;#937;");
  imagejpeg( $dst, null, 100 );
  imagedestroy( $dst );
  imagedestroy( $im );

?>
Avatar billede coderdk Praktikant
23. marts 2005 - 23:52 #38
Jooh, hvis du ændrer:

$white = imagecolorallocate( $dst, 255, 255, 255 );

til:

$black = imagecolorallocate( $dst, 0, 0, 0 );

og hvis du har en verdana.ttf liggende i /front/ folderen (hvilket du måske ikke har - du kan uploade en til en ny "front" folder og bruge "front/verdana.ttf")
Avatar billede mlybech Nybegynder
23. marts 2005 - 23:55 #39
Det her virker ikke:
<?php

  header( 'Expires: 0' );
  $files = glob( "hjemmeside/galleri/18-03-05/images/*.jpg" );
  shuffle( $files );
  $billede = $files[0];
  header( 'Content-Type: image/jpeg' );
  $im = imagecreatefromjpeg( $billede );
  $w = imagesx( $im );
  $h = imagesy( $im );
  $nw = ( $w / 2 );
  $nh = ( $h / 2 );
  $dst = imagecreatetruecolor( $nw, $nh );
  imagecopyresampled( $dst, $im, 0, 0, 0, 0, $nw, $nh, $w, $h );
  $black = imagecolorallocate( $dst, 0, 0, 0 );
  imagettftext($im, 20, 0, 10, 20, $black, "front/verdana.ttf",
  "Testing... Omega: &amp;#937;");
  imagejpeg( $dst, null, 100 );
  imagedestroy( $dst );
  imagedestroy( $im );

?>
Avatar billede mlybech Nybegynder
24. marts 2005 - 00:18 #40
Kan det løses? Du skal nok få ekstra point da du sådan set har hjulpet mig hele vejen :D
Avatar billede coderdk Praktikant
24. marts 2005 - 01:06 #41
imagettftext($im, 20, 0, 10, 20, $black, "front/verdana.ttf",
  "Testing... Omega: &amp;#937;");

skal nok være:

imagettftext($dst, 20, 0, 10, 20, $black, "front/verdana.ttf",
  "Testing... Omega: &amp;#937;");
Avatar billede mlybech Nybegynder
24. marts 2005 - 01:38 #42
Kan ikke få det til at virke... lige meget
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester