Avatar billede michaeljuul Nybegynder
13. november 2004 - 18:35 Der er 14 kommentarer og
1 løsning

Bestemt størrelse på random foto?

Jeg har en side der viser random billeder fra et bestemt dir. Med denne kode:
<?php
$mappe = "spillerfoto"; // Mappen med billeder

$handle = opendir($mappe);
while (($fil = readdir($handle)) !== false) {
    if ($fil != "." && $fil != ".." && !is_dir($mappe."/".$fil)) {
        $billeder[] = "$fil";
    }
}
closedir($handle);

$i = rand(0,count($billeder)-1);
echo "<img src='$mappe/$billeder[$i]'>";
?>
Nu kunne jeg godt tænke mig at de billeder der kommer frem har en størrelse på f.eks 400x300.

Nogle som kan hjælpe med det?

Mvh
Michal
Avatar billede sukos Juniormester
13. november 2004 - 18:39 #1
$i = rand(0,count($billeder)-1);
$size = getimagesize($mappe/$billeder[$i]);

echo "<img src=\"". $mappe/$billeder[$i] ."\"". $size[3] .">";
Avatar billede sukos Juniormester
13. november 2004 - 18:43 #2
hovsa!

$i = rand(0,count($billeder)-1);
$size = getimagesize($mappe ."/". $billeder[$i]);

echo "<img src=\"". $mappe ."/". $billeder[$i] ."\"". $size[3] .">";
Avatar billede sukos Juniormester
13. november 2004 - 18:44 #3
Nåh,

$i = rand(0,count($billeder)-1);
$size = getimagesize($mappe ."/". $billeder[$i]);

echo "<img src=\"". $mappe ."/". $billeder[$i] ."\" ". $size[3] .">";
Avatar billede sukos Juniormester
13. november 2004 - 19:01 #4
Ind imellem, skal der bruges fuld sti, p.g.a. serveropsætning, (tror jeg da! :O) )


<?php

$mappe = "spillerfoto/"; // Mappen med billeder
$full_path = $_SERVER["DOCUMENT_ROOT"] ."/". $mappe;

$handle = opendir($mappe);
while (($fil = readdir($handle)) !== false) {

    if (!is_file($full_path . $fil)) {
    continue;
    }

    if(true == getimagesize($full_path . $fil)) {
        $billeder[] = $fil;
    }
}
closedir($handle);

$i = array_rand($billeder);
$size = getimagesize($full_path . $billeder[$i]);

echo "<img src=\"". $mappe . $billeder[$i] ."\" ". $size[3] .">";

?>
Avatar billede sukos Juniormester
13. november 2004 - 19:05 #5
Du får også lige et svar:

<?php

$mappe = "til_test/side9/"; // Mappen med billeder
$full_path = $_SERVER["DOCUMENT_ROOT"] ."/". $mappe;

$handle = opendir($mappe);
while (($fil = readdir($handle)) !== false) {

    if (!is_file($full_path . $fil)) {
    continue;
    }

    if(true == getimagesize($full_path . $fil)) {
        $billeder[] = $fil;
    }
}
closedir($handle);

$i = array_rand($billeder);
$size = getimagesize($full_path . $billeder[$i]);

echo "<img src=\"". $mappe . $billeder[$i] ."\" ". $size[3] ."><br>\n";
echo "Filnavn: ". $billeder[$i] ."<br>\n";
echo "Filstr. ". round((filesize($full_path . $billeder[$i])/1024)) ." kb.";
?>
Avatar billede sukos Juniormester
13. november 2004 - 19:06 #6
HOv, forkert sti! :O)))))))
Avatar billede sukos Juniormester
13. november 2004 - 19:06 #7
Må hellere se at komme på arbejde! (æv)
Avatar billede bojo Nybegynder
13. november 2004 - 21:03 #8
Den simple som ødelægger proportioner:

echo "<img src='$mappe/$billeder[$i]' width='400' height='300'>";

den lidt større som tilgengæld bevarer proportioner (bygger på sukos eks.):

$size = getimagesize($full_path . $billeder[$i]);

$w = $size[0];
$h = $size[1];

$rw = 400 / $w;
$rh = 300 / $h;

if( $rw > $rh )
  $rsize = $rh;
else
  $rsize = $rw;

$w = $w * $rsize;
$h = $h * $rsize;

echo "<img src=\"". $mappe . $billeder[$i] ."\" width='$w' height='$h'>";
Avatar billede michaeljuul Nybegynder
13. november 2004 - 21:04 #9
Jeg kan ikke få det til at virke :-(
Koden ser sådan ud nu.

<?php

$mappe = "/testfoto/"; // Mappen med billeder
$full_path = $_SERVER["DOCUMENT_ROOT"] ."/". $mappe;

$handle = opendir($mappe);
while (($fil = readdir($handle)) !== false) {

    if (!is_file($full_path . $fil)) {
    continue;
    }

    if(true == getimagesize($full_path . $fil)) {
        $billeder[] = $fil;
    }
}
closedir($handle);

$i = array_rand($billeder);
$size = getimagesize($full_path . $billeder[$i]);

echo "<img src=\"". $mappe . $billeder[$i] ."\" ". $size[3] ."><br>\n";
echo "Filnavn: ". $billeder[$i] ."<br>\n";
echo "Filstr. ". round((filesize($full_path . $billeder[$i])/1024)) ." kb.";
?>
Avatar billede michaeljuul Nybegynder
13. november 2004 - 21:06 #10
Hej bojo

Kunne du prøve og sætte det du skrev sammen med min kode?

<?php
$mappe = "testfoto"; // Mappen med billeder

$handle = opendir($mappe);
while (($fil = readdir($handle)) !== false) {
    if ($fil != "." && $fil != ".." && !is_dir($mappe."/".$fil)) {
        $billeder[] = "$fil";
    }
}
closedir($handle);

$i = rand(0,count($billeder)-1);
echo "<img src='$mappe/$billeder[$i]'>";
?>
Avatar billede bojo Nybegynder
13. november 2004 - 21:31 #11
<?php
$mappe = "testfoto"; // Mappen med billeder

$handle = opendir($mappe);
while (($fil = readdir($handle)) !== false) {
    if ($fil != "." && $fil != ".." && !is_dir($mappe."/".$fil)) {
        $billeder[] = "$fil";
    }
}
closedir($handle);

$i = rand(0,count($billeder)-1);


$size = getimagesize($mappe."/".$billeder[$i]);

$w = $size[0];
$h = $size[1];

$rw = 400 / $w;
$rh = 300 / $h;

if( $rw > $rh )
  $rsize = $rh;
else
  $rsize = $rw;

$w = $w * $rsize;
$h = $h * $rsize;

echo "<img src='$mappe/$billeder[$i]' width='$w' height='$h'>";
?>
Avatar billede hmortensen Nybegynder
13. november 2004 - 21:40 #12
Og istedet for rand():

shuffle($billeder);
echo $billeder[0];
Avatar billede michaeljuul Nybegynder
13. november 2004 - 21:43 #13
Tak Bojo

Kommer du med et svar? Så du kan få nogle point
Avatar billede bojo Nybegynder
13. november 2004 - 21:46 #14
nej tak
Avatar billede michaeljuul Nybegynder
13. november 2004 - 21:49 #15
ok det vil også være synd for sukos.
Så sukos får dem.

Endnu engang tak for hjælpe :-)
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