Avatar billede woogoo Nybegynder
07. marts 2006 - 22:51 Der er 16 kommentarer og
1 løsning

Hent billeder fra mappe og smid dem ind i en php-fil!

Hej eksperter!

Jeg har prøvet at få fat i et billedegalleri, men uden held, så kom på en anden idé som har samme prinsip, men virker på en anden måde.

Hvis jeg laver en mappe der hedder "Promo" og en mappe der hedder "Live" på min webserver, og derefter opretter undermapper med navne som fx. "01-02-2006" osv. Kan jeg så få vist de billede filer der ligger i undermapperne under de kategorier som de øverste mapper hedder.. Så den selv sætter dem ind på følgende måde og opretter thumbs:

Side med øverste mapper (Hovedkategorierne)
http://www.woogoo.dk/gal-eks1.jpg

Side med undermapperne (Underkategorier)
http://www.woogoo.dk/gal-eks2.jpg

Håber nogen kan hjælpe!

//Woogoo
Avatar billede jakobdo Ekspert
08. marts 2006 - 07:32 #1
Prøv at kig på funktionen glob()
Måske du selv kan tænke resten af galleriet ud.
Ellers skriv igen.
Avatar billede woogoo Nybegynder
08. marts 2006 - 10:41 #2
altså jeg har ikke rigtig nogen gode skills i php.. Kan sådan ændre i det og sådan noget, men alle de forskellige koder kan jeg ikke..
Avatar billede jakobdo Ekspert
08. marts 2006 - 13:08 #3
Jeg skal nok kigge på at lave en løsning i aften.
Ping lige tråden i aften, hvis ikke jeg er kommet med en mulig løsning inden da.
Avatar billede jakobdo Ekspert
08. marts 2006 - 21:53 #4
Det er bestemt ikke smukt...
Men se eksemplet her: http://www.codebreaker.dk/exp/galleri/index.php
Og koden her:
<?php
//http://www.eksperten.dk/spm/693433

function resize( $filename, $newfilename, $maxw, $maxh )
{
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx($srcim);
    $oh = imagesy($srcim);
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $hscale : $wscale );
    $nw = round( $ow * $scale, 0 );
    $nh = round( $oh * $scale, 0 );
    $dstim = imagecreatetruecolor( $nw, $nh );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
   
    imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
   
    return file_exists($newfilename);
}

function showGallery($path=NULL)
{
    $output = '';
    $count = 0;
    $pics = 5;
    if(empty($path))
    {
        $path = "./";
    }
    else
    {
        $path = $path . "/";
    }
   
    foreach (glob($path."*",GLOB_ONLYDIR) as $dir)
    {
        $jpgs = glob($dir."/thumb_{*.jpg, *jpeg, *.jpe}",GLOB_BRACE);
        if(count($jpgs)>0)
        {
            srand((float)microtime() * 1000000);
            shuffle($jpgs);
            $jpg = end($jpgs);
           
            if($count >= $pics)
            {
                echo "<br />";
                $count = 0;
            }
            $count++;
            $output .= '<a href="./index.php?dir='.$dir.'"><img src="'.$jpg.'" /></a>' . "\n";
        }
        else
        {
            $output .= '<a href="./index.php?dir='.$dir.'"><img src="no_thumb.png" /></a>' . "\n";
        }
    }
   
    foreach (glob($path."{*.jpg, *jpeg, *.jpe}",GLOB_BRACE) as $jpg)
    {
        $file = $path . basename($jpg);
        if(!file_exists($path . 'thumb_' . basename($jpg)) && !preg_match('/\/thumb_/', $file))
        {
            resize($jpg,$path . 'thumb_' . basename($jpg),100,100);
        }
        $thumb = $path . "thumb_" . basename($jpg);
        if(!preg_match('/\/thumb_/', $file))
        {
          $output .= '<a target="blank" href="'.$jpg.'"><img src="'.$thumb.'" /></a>' . "\n";
      }
    }
    return $output;
}

echo showGallery($_GET['dir']);

?>
Avatar billede woogoo Nybegynder
09. marts 2006 - 12:35 #5
Det ser ganske fornuftigt ud! men kan du måske få den til at lave thumbnailsne på den første side 50x50 px? og på undersiderne 25x25, og så evt, tage dele af billede, så de ikke bare bliver skaleret ned?! hvis du forstår hvad jeg mener?! så det kun er en del af billedet der kommer i de små thumbs? (KUN på undersiderne)
Avatar billede woogoo Nybegynder
09. marts 2006 - 12:36 #6
og så forresten, hvis man har flere undermapper under Galleri1, så den laver en overskrift til hver (Navngivet efter mappenavnet)? ligesom på billedet ? og deler den op i flere sektioner!
Avatar billede woogoo Nybegynder
09. marts 2006 - 12:39 #7
Det skal jo så bare være flere sider.. man kunne evt. lave en .php side der hed "index.php", hvor den så fandt de forskellige mapper og viste en thumb på 50x50px... og så en fil der hed "galleri.php", som man så lagde i hver enkel mappe? og i den fil der skrev den så først overskrift = Mappenavn, og neden under kom alle billederne fra mappen i thumbs på 25x25px.. hvis du forstår?
Avatar billede jakobdo Ekspert
09. marts 2006 - 12:42 #8
Det kan jeg sagtens lave!
Kigger lige på det igen i aften! :o)
Avatar billede woogoo Nybegynder
09. marts 2006 - 20:55 #9
jakobdo > hey du. får du kigget på det? :)
Avatar billede jakobdo Ekspert
09. marts 2006 - 20:59 #10
Har lige haft noget andet at se til, men kigger på det med det samme.
Avatar billede jakobdo Ekspert
09. marts 2006 - 21:24 #11
Så er størrelser på plads!

<?php
//http://www.eksperten.dk/spm/693433

function resize( $filename, $newfilename, $maxw, $maxh )
{
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx($srcim);
    $oh = imagesy($srcim);
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $hscale : $wscale );
    $nw = round( $ow * $scale, 0 );
    $nh = round( $oh * $scale, 0 );
    $dstim = imagecreatetruecolor( $nw, $nh );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
   
    imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
   
    return file_exists($newfilename);
}

function showGallery()
{
    $output = '';
    $count = 0;
    $pics = 5;
    $path = "./";
   
    foreach (glob($path."*",GLOB_ONLYDIR) as $dir)
    {
        $jpgs = glob($dir."/gallerithumb_{*.jpg, *jpeg, *.jpe}",GLOB_BRACE);
        if(count($jpgs)>0)
        {
            $output .= '<a href="'.$dir.'/index.php"><img src="'.$jpgs[0].'" /></a>' . "\n";
        }
        else
        {
            $jpgs = glob($dir."/{*.jpg, *jpeg, *.jpe}",GLOB_BRACE);
            if(count($jpgs)>0)
            {
                $thumb = '/gallerithumb_' . basename($jpgs[0]);
                resize($jpgs[0],$dir . $thumb,50,50);
                $output .= '<a href="'.$dir.'/index.php"><img src="'.$dir.$thumb.'" /></a>' . "\n";
            }
        }
    }
   
    foreach (glob($path."{*.jpg, *jpeg, *.jpe}",GLOB_BRACE) as $jpg)
    {
        $file = $path . basename($jpg);
        if(!file_exists($path . 'thumb_' . basename($jpg)) && !preg_match('/\/thumb_/', $file) && !preg_match('/\/gallerithumb_/', $file))
        {
            resize($jpg,$path . 'thumb_' . basename($jpg),25,25);
        }
        $thumb = $path . "thumb_" . basename($jpg);
        if(!preg_match('/\/thumb_/', $file) && !preg_match('/\/gallerithumb_/', $file))
        {
          $output .= '<a target="blank" href="'.$jpg.'"><img src="'.$thumb.'" /></a>' . "\n";
      }
    }
    return $output;
}

echo showGallery($_GET['dir']);

?>

Dog bliver 25*25 meget småt.
Denne fil skal du så lægge i hver mappe.
Avatar billede woogoo Nybegynder
10. marts 2006 - 11:10 #12
Det ser ganske fint ud.. Nu er der bare lige et par ting som skal laves.. hvilket jeg ikke tror er nogen stor sag for dig!! :P

1. Som du kan se på tegningen kommer der en overskrift over hver "billede-sektion" med navnet på mappen.. altså.. datoen.! Det vil jeg gerne have ind så hvis jeg har flere mapper under den første mappe, så skal de bare blive til overskrifter istedet for links..?

2. Billederne bliver ganske rigtigt skaleret ned, men hvis billedet fx. er 400x500, så bliver billedet ikke et kvadrat, men et rektankel! se evt. på http://www.thenewbrand.dk/tnb/da/pages/media/galleri/index.php. De skulle gerne være 50x50 lige meget hvor stort original billedet er..'

3. Kan du lave kanterne sorte? istedet for blå?
Avatar billede woogoo Nybegynder
10. marts 2006 - 11:12 #13
10/03-2006 11:10:22 >> lige ang. #1: Snakker om billede http://www.woogoo.dk/gal-eks2.jpg
Avatar billede jakobdo Ekspert
12. marts 2006 - 14:40 #14
Jeg tror jeg må give lidt op igen.
Har du ikke mulighed for selv at rette lidt i koden og skrive hvad du ønsker?
Avatar billede woogoo Nybegynder
24. marts 2006 - 13:11 #15
hmm.. det er ok .. finder på en løsning.. smid et svar! ;)
Avatar billede jakobdo Ekspert
24. marts 2006 - 13:19 #16
Svar!
Avatar billede jakobdo Ekspert
25. marts 2006 - 12:02 #17
Jeg takker for point!
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