Avatar billede michaeljuul Nybegynder
16. november 2004 - 21:06 Der er 15 kommentarer og
1 løsning

Kun billede som er mindst 200kb + Mappe

Se tidligere tråd: http://www.eksperten.dk/spm/561974

Kan man få koden til at lede efter billeder i under mapper?
Altså hvis nu min hovdemappe er testfoto, og jeg så har 4 under mapper i den kan koden så hente fra en af dem helt tilfældig?
Avatar billede elskermad.dk Nybegynder
16. november 2004 - 21:34 #1
jeg ved sgu ikke om koden virker, og heller ikk om den burde, men hvis jeg skulle lave nogen lignende vil jeg gøre noget lignende dette! (for at komme ned i undermapperne og hente billederne)

<?php

$mappe = "copper/albums/userpics/10001"; // Mappen med billeder

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

$billeder = findbilleder($mappe);

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

?>
Avatar billede michaeljuul Nybegynder
16. november 2004 - 21:37 #2
Okay hvordan skulle det så se ud hvis man sætter din kode sammen med den her?

<?php
$mappe = "copper/albums/userpics/10001"; // Mappen med billeder

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

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


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

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

$rw = 350 / $w;
$rh = 250 / $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 elskermad.dk Nybegynder
16. november 2004 - 22:19 #3
det er blot det øverste jeg har ændret i! indtil $size
Avatar billede michaeljuul Nybegynder
16. november 2004 - 22:40 #4
Den kommer med denne fejl:
Parse error: parse error, unexpected '{' in c:\apache\apache\htdocs\index.php on line 72
Koden ser sådan ud nu:
<?php
$mappe = "testfoto"; // Mappen med billeder

function findbilleder($mappe,$billeder = '') {
    $handle = opendir($mappe);
    while (($fil = readdir($handle)) !== false) {
        if ($fil != "." && $fil != "..") {
            if (!is_dir($mappe."/".$fil) {
                $billeder[] .= "$fil";
            }  DET ER MIN LINJE 72
        else {
                findbilleder($mappe . "/" . $fil,$billeder);
            }
        }
    }
    closedir($handle);
   
    return $billeder;
}

$billeder = findbilleder($mappe);

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

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

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

$rw = 350 / $w;
$rh = 250 / $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
16. november 2004 - 22:43 #5
Mangler en ) i linien før
Avatar billede michaeljuul Nybegynder
16. november 2004 - 22:53 #6
Tak det hjalp...MEN
Den finder ikke billeder som ligger i en under mappe :-(
Avatar billede bojo Nybegynder
17. november 2004 - 08:13 #7
PHP kalder funktioner med "by value" overførsel så du overskriver din egen $billeder. Der er umiddelbart 2 løsninger, ovfør $billeder "by referance" istedet, som her under eller lav $billeder global

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

function findbilleder($mappe,&$billeder) {

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

    return $billeder;
}

findbilleder($mappe, $billeder);

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

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

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

$rw = 350 / $w;
$rh = 250 / $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 bojo Nybegynder
17. november 2004 - 08:19 #8
hov, ret $mappe tilbage til testfoto
Avatar billede michaeljuul Nybegynder
17. november 2004 - 09:47 #9
Mappen er rettet tilbage til testfoto.
Men nu kommer der bare et rødt kryds :-(
Og min størrelse på 100x1024 mangler i din kode Bojo
Avatar billede bojo Nybegynder
17. november 2004 - 09:52 #10
hov, jeg overså at $mappe skal fjernes fra echo "<img src='$mappe/$billeder[$i]' width='$w' height='$h'>"; da mappen gemmes sammen med filnavnet nu
Avatar billede michaeljuul Nybegynder
17. november 2004 - 10:17 #11
Lækkert nu virker det, men nu mangler jeg det stykke fra den gamle kode, hvor den kun tager filer over 100kb :
Kunne du prøve og sætte din kode sammen med det her? :
<?php
$mappe = "testfoto"; // Mappen med billeder

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

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


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

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

$rw = 350 / $w;
$rh = 250 / $h;

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

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

echo "<img src='$billeder[$i]' width='$w' height='$h'>";
?>
Avatar billede bojo Nybegynder
17. november 2004 - 10:48 #12
<?php
$mappe = "testfoto"; // Mappen med billeder

function findbilleder($mappe,&$billeder) {

    $handle = opendir($mappe);
    while (($fil = readdir($handle)) !== false) {
        if ($fil != "." && $fil != "..") {
            if (!is_dir($mappe."/".$fil) ) {
              if( filesize ($mappe."/".$fil) <= 100*1024 ) {
                  $billeder[] .= "$mappe/$fil";
              }
            }
        else {
                findbilleder($mappe . "/" . $fil,$billeder);
            }
        }
    }
    closedir($handle);

    return $billeder;
}

findbilleder($mappe, $billeder);

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

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

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

$rw = 350 / $w;
$rh = 250 / $h;

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

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

echo "<img src='$billeder[$i]' width='$w' height='$h'>";
?>
Avatar billede michaeljuul Nybegynder
17. november 2004 - 10:57 #13
Tak det var sgu dejligt :-)
Der var bare lige et < som skulle være > i linjen
if( filesize ($mappe."/".$fil) >= 100*1024 )

Så mangler jeg bare et svar
Avatar billede bojo Nybegynder
17. november 2004 - 11:45 #14
hehe - en lille bøf :-) Jeg gjorde som jeg ville istedet for at læse hvad du ville have.

Jeg skal ikke have points
Avatar billede michaeljuul Nybegynder
17. november 2004 - 13:53 #15
Ok så måske et svar fra elskermad.dk????
Avatar billede elskermad.dk Nybegynder
17. november 2004 - 15:47 #16
mener nu bojo har mere ret til dem eftersom jeg ret sikkert ikke havde fået mit til at virke ;) men hvis han ikke vil have dem skal jeg da nok lige lægge et svar så de kan komme væk  :D
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