Avatar billede michaeljuul Nybegynder
15. marts 2009 - 11:39 Der er 15 kommentarer og
1 løsning

Vis små billeder uden et stort galleri?

Jeg har en masse billeder i forskellige mapper.
Den første mappe (billeder) i den mappe er der 20 andre mapper, med billeder.

Jeg kun godt tænke mig en index fil som kunne visse billederne i f.eks 75x150 og når man klikker på et billede visse det i f.eks 300x500.
Og denne index fil skulle så gerne kunne kopieres und i alle mapperne.

Er der nogle som kan hjælpe med dette?
Avatar billede jakobdo Ekspert
15. marts 2009 - 15:25 #1
Du kunne tilrette dette script:

<?php
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Strict //EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n";
echo "<html>\n";
echo "<head>\n";
echo "<title>SIDE TITLE</title>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\">\n";
echo "</head>\n";
echo "<body>\n";
echo "<div id=\"content\">\n";
echo "<h1>SIDE TITLE</h1>\n";

function resize( $filename, $newfilename, $maxw, $maxh ){
    $result = false;
    $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 );
    $result = imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return $result;
}

$dir = getcwd();

$allowExt = array("jpg","JPG");

// Open a known directory, and proceed to read its contents
if (is_dir($dir)){
    if ($dh = opendir($dir)){
        $fileArray = array();
        while(($file = readdir($dh)) !== false){
            $arr = explode (".", $file);
            $extension = end($arr);
            if(in_array($extension,$allowExt)){
                if(file_exists("thumb_" . $file) || preg_match('/^thumb_/', $file)){
                    ;
                }else{
                    resize($file, getcwd() . "/thumb_" . $file, 300, 300);
                }
                if(!preg_match('/^thumb_/', $file)){
                    $thumb = "thumb_" . $file;
                    $fileArray[$thumb] = $file;
                }
            }
        }
        closedir($dh);
    }
}

if(count($fileArray)>0){
    echo "<table id=\"centerTable\">\n";
    foreach($fileArray as $thumb => $file){
        echo "<tr><td><a target=\"_blank\" href=\"" . $file . "\"><img src=\"".$thumb."\"></a></td></tr>\n";
    }
    echo "</table>\n";
}else{
    echo "Vi har ikke uploadet nogle billeder endnu, de kommer...";
}

echo "</div>\n";
echo "</body>\n";
echo "</html>\n";
?>
Avatar billede michaeljuul Nybegynder
19. marts 2009 - 10:57 #2
Mange tak.
Jeg afprøver det senere idag.
Avatar billede michaeljuul Nybegynder
20. marts 2009 - 09:24 #3
Kan ikke få den til og virke.
Den ser sådan her ud. http://dl.getdropbox.com/u/388022/index.JPG
Avatar billede jakobdo Ekspert
20. marts 2009 - 09:35 #4
Har du husket at chmod selve diret til 777 ?
Scriptet skal nemlig kunne skrive til diret.
Avatar billede michaeljuul Nybegynder
20. marts 2009 - 09:56 #5
Jeg har den til og køre på en Apacha server på min xp.
B-one har et problem med og få min ftp ved dem op og køre.

Har fjernet skrivebeskyttelsen på det Dir den ligge i, men det ser ikke ud til og hjælpe.

Kan du vise mig hvordan den virker?
Hvis du har et sted og kunne uploade den?

Så kan du få point med det samme.
Avatar billede jakobdo Ekspert
20. marts 2009 - 10:12 #6
Jeg oprettede mappen: 868168
Smed dit store billede i mappen.
Åbnede så siden:
http://www.codebreaker.dk/leg/868168/

Og nu er der thumb og originalt billede.
Avatar billede michaeljuul Nybegynder
20. marts 2009 - 10:22 #7
Det ser jo fint ud :-)

Kan man evt lave det så man har fil navnet på billede filen under billedet?
Avatar billede jakobdo Ekspert
20. marts 2009 - 11:09 #8
Sagtens.
Du har linjen:

echo "<tr><td><a target=\"_blank\" href=\"" . $file . "\"><img src=\"".$thumb."\"></a></td></tr>\n";

ret til:

echo "<tr><td><a target=\"_blank\" href=\"" . $file . "\"><img src=\"".$thumb."\"></a></td></tr>\n";
echo "<tr><td>" . $file . "</td></tr>\n";

Og alternativt så indbyg lightbox 2.0.
Avatar billede jakobdo Ekspert
20. marts 2009 - 11:09 #9
Og du får et svar.
Avatar billede michaeljuul Nybegynder
20. marts 2009 - 11:55 #10
Mange tak :-)
Avatar billede michaeljuul Nybegynder
23. marts 2009 - 09:37 #11
Jeg kan ikke få billederne til og være f.eks 100x100 :-(
Jeg kan ikke se billedet hvis det er i png format.
Avatar billede jakobdo Ekspert
23. marts 2009 - 20:13 #12
Funktionen er lavet som jpg only.

Se f.eks. her:

$allowExt = array("jpg","JPG");

Dog har jeg i "GUIDES", en resize funktion, som tager flere formater.
Prøv at brug den.
Og den bør godt kunne resize til andet end 300,300
Avatar billede jakobdo Ekspert
23. marts 2009 - 20:21 #13
Og takker forresten for point.
Avatar billede michaeljuul Nybegynder
23. marts 2009 - 23:30 #14
Du skriver i "GUIDES"", en resize funktion, som tager flere formater.
Hvor finder jeg den?
Avatar billede michaeljuul Nybegynder
23. marts 2009 - 23:48 #15
Jeg har ændret
$allowExt = array("jpg","JPG"); til
$allowExt = array("jpg","JPG","bmp","BMP","png","PNG");

Men kan ikke se png og bmp billedet på siden.
Du kan se det her http://www.duerher.dk/868168/
Avatar billede michaeljuul Nybegynder
24. marts 2009 - 00:13 #16
Nu ser min kode sådan her ud, efter jeg fandt din i GUIDES.
Men jeg kan stadig ikke få den til og vise bmp. Og heller ikke resize til 150x150.



<?php

echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Strict //EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n";

echo "<html>\n";

echo "<head>\n";

echo "<title>Min test</title>\n";

echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\">\n";

echo "</head>\n";

echo "<body>\n";

echo "<div id=\"content\">\n";

echo "<h1>Her er der billeder</h1>\n";



function resize( $filename, $newfilename, $maxw, $maxh, $quality=85 )
{
  $ext = strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
  switch($ext)
  {
    case 'jpeg':
    case 'jpe':
    case 'jpg':
      $srcim = imagecreatefromjpeg( $filename );
      break;
    case 'gif':
      $srcim = imagecreatefromgif( $filename );
      break;
    case 'png':
      $srcim = imagecreatefrompng( $filename );
      break;
    case 'bmp':
      $srcim = imagecreatefrompng( $filename );
      break;
    default:
      return false;
  }
  $ow = imagesx( $srcim );
  $oh = imagesy( $srcim );
  $wscale = $maxw / $ow;
  $hscale = $maxh / $oh;
  $scale = min( $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 );
  switch($ext)
  {
    case 'jpeg':
    case 'jpe':
    case 'jpg':
      imagejpeg( $dstim, $newfilename, $quality );
      break;
    case 'gif':
      imagegif( $dstim, $newfilename );
      break;
    case 'png':
      $png_q = floor( abs( $quality / 10 - 9.9 ) );
      imagepng( $dstim, $newfilename, $png_q );
      break;
    case 'bmp':
      imagegif( $dstim, $newfilename );
      break;
    default:
      return false;
  }
  imagedestroy( $dstim );
  imagedestroy( $srcim );
  return file_exists($newfilename);
}


$dir = getcwd();



$allowExt = array("jpg","JPG","bmp","BMP","png","PNG");



// Open a known directory, and proceed to read its contents

if (is_dir($dir)){

    if ($dh = opendir($dir)){

        $fileArray = array();

        while(($file = readdir($dh)) !== false){

            $arr = explode (".", $file);

            $extension = end($arr);

            if(in_array($extension,$allowExt)){

                if(file_exists("thumb_" . $file) || preg_match('/^thumb_/', $file)){

                    ;

                }else{

                    resize($file, getcwd() . "/thumb_" . $file, 150, 150);

                }

                if(!preg_match('/^thumb_/', $file)){

                    $thumb = "thumb_" . $file;

                    $fileArray[$thumb] = $file;

                }

            }

        }

        closedir($dh);

    }

}



if(count($fileArray)>0){

    echo "<table id=\"centerTable\">\n";

    foreach($fileArray as $thumb => $file){

        echo "<tr><td><a target=\"_blank\" href=\"" . $file . "\"><img src=\"".$thumb."\"></a></td></tr>\n";

echo "<tr><td>" . $file . "</td></tr>\n";

    }

    echo "</table>\n";

}else{

    echo "Vi har ikke uploadet nogle billeder endnu, de kommer...";

}



echo "</div>\n";

echo "</body>\n";

echo "</html>\n";

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