Avatar billede oldnick Nybegynder
30. november 2006 - 12:47 Der er 12 kommentarer og
1 løsning

Galleri, der vise filernes navn, ingen upload.

Hej

Jeg skal bruge et galleri, hvor jeg tager filerne fra en bestemt mappe og viser dem på en siden ala thumbnails. Hvor man kan bladre frem og tilbage. Billederne må gerne blive resized nå de bliver vist de skal selvfølgelig, bliver i rigtige proportioner. Og så skal fil navnet stå neden under eller over!!

Jeg har fundet denne her kode og der er noget popup med som er helt fint. Jeg skal bare have den til at resize ved visning og skrive filnavnet?

Er der en som kan hjælpe med det..?

KODE:

<html>
<head>
<script type="text/javascript">
function PopUp(pic) {
    window.open("popup.php?pic="+pic,"Titel","width=150,height=150");
}
</script>
</head>
</head>

<body>

<?php
# Indstillinger
$mappe = "web_galleri/"; // Mappen med billeder
$pr_side = 5; // Antallet af billeder pr. side
$byside = 4; // Antal billeder ved siden af hinanden
$sidecount = 1;

if (isset($_GET['offset'])) {
    $offset = $_GET['offset'];
} else {
    $offset = 0;
}
$pics = $offset+$pr_side;
$i = $offset;

# Laver et array med billederne, så vi senere kan sortere
$handle = opendir($mappe);
while (($fil = readdir($handle)) !== false) {
    if ($fil != "." && $fil != ".." && !is_dir($mappe."/".$fil)) {
        $billeder[] = $fil;
    }
}
closedir($handle);

# Udskriver billederne
sort($billeder);
while($i < $pics && $billeder[$i] != "") {
    echo "<a href=\"java script: PopUp('$mappe/$billeder[$i]')\"><img src=\"$mappe/$billeder[$i]\" border=\"1px\" style=\"margin: 5px;\"></a>";
    if ($sidecount == $byside) {
        $sidecount = 0;
    }
    $sidecount++;
    $i++;
}
?>
<hr>
<?php
#Udskriver frem og tilbage links
if ($offset >= $pr_side) {
    $forrige = $offset-$pr_side;
    echo "<a href=\"?offset=$forrige\">Forrige</a> ";
}
if (count($billeder) > $offset+$pr_side) {
    $naeste = $offset+$pr_side;
    echo "<a href=\"?offset=$naeste\">Næste</a>";
}
?>

</body>
</html>
Avatar billede sw_red_6 Nybegynder
30. november 2006 - 13:27 #1
hvis du laver en echo $billeder[$i]; så har du filnavnet. Hvis du skal have resize så bliver det lidt mere kompliceret..
Avatar billede oldnick Nybegynder
30. november 2006 - 14:17 #2
Tak det virker, fint. Kan du forklare det med resize?
Avatar billede sw_red_6 Nybegynder
30. november 2006 - 14:37 #3
jeg kan se om ikke jeg har noget liggende.
Kan du bruge GD-Lib på din side?
test med:
<?php
var_dump(gd_info());
?>
Avatar billede oldnick Nybegynder
30. november 2006 - 14:41 #4
Jeg får det her output!

array(12) { ["GD Version"]=>  string(27) "bundled (2.0.28 compatible)" ["FreeType Support"]=>  bool(true) ["FreeType Linkage"]=>  string(13) "with freetype" ["T1Lib Support"]=>  bool(true) ["GIF Read Support"]=>  bool(true) ["GIF Create Support"]=>  bool(true) ["JPG Support"]=>  bool(true) ["PNG Support"]=>  bool(true) ["WBMP Support"]=>  bool(true) ["XPM Support"]=>  bool(true) ["XBM Support"]=>  bool(true) ["JIS-mapped Japanese Font Support"]=>  bool(false) }
Avatar billede sw_red_6 Nybegynder
30. november 2006 - 14:43 #5
jeg kunne ikke lige finde det jeg mente jeg havde liggende, men prøv at kigge på den her: http://php.coder.dk/resizeimg.php
du kan så prøve at få fat i coderdk så han kan få point for det, hvis du kan bruge det
Avatar billede oldnick Nybegynder
30. november 2006 - 14:45 #6
smid et svar så skal du få point, du har jo hjulpet! Så giver jeg bare coderdk points i et andet spg. hvis det lykkes..

Tak for hjælpen :)
Avatar billede sw_red_6 Nybegynder
30. november 2006 - 14:47 #7
selv tak
Avatar billede oldnick Nybegynder
30. november 2006 - 14:49 #8
Det kan desværrer ikke lige bruges, jeg skal ikke resize og gemme billederne jeg skal kun scalere dem ved visning, så jeg har den originale størrelse liggende i mappe. Dvs der ligger kun "en" fil af hvert billede i mappen. Gir' det mening?
Avatar billede sw_red_6 Nybegynder
30. november 2006 - 14:52 #9
jep og jeg er sikker på at koden fra linket kan skrives om så det ikke gemmer filen men bare viser den.
Avatar billede sw_red_6 Nybegynder
30. november 2006 - 14:54 #10
du kunne også evt. kigge lidt på eksempel 2 her: http://dk.php.net/manual/en/function.imagecopyresampled.php
Avatar billede oldnick Nybegynder
30. november 2006 - 18:43 #11
ok, kan dog ikke helt få det til at spille..
Avatar billede oldnick Nybegynder
30. november 2006 - 19:21 #12
jeg har det her nu kan du hjælpe??? Den skrive ikke noget i img src="". Det kan godt være jeg ikke helt forstår at bruge functions.

<html>
<head>
<script type="text/javascript">
function PopUp(pic) {
    window.open("popup.php?pic="+pic,"Titel","width=150,height=150");
}
</script>
<style type="text/css">
<!--
h1 {
    font-family: "Trebuchet MS";
    font-size: 10px;
    color: #999999;
    margin: 2px 0px 0px 0px;
}
.img {
float:left;
margin: 5px;
}
-->
</style>
</head>
<body>

<?php
# Indstillinger
$mappe = "web_galleri"; // Mappen med billeder
$pr_side = 6; // Antallet af billeder pr. side
$byside = 4; // Antal billeder ved siden af hinanden
$sidecount = 1;

if (isset($_GET['offset'])) {
    $offset = $_GET['offset'];
} else {
    $offset = 0;
}
$pics = $offset+$pr_side;
$i = $offset;

# Laver et array med billederne, så vi senere kan sortere
$handle = opendir($mappe);
while (($fil = readdir($handle)) !== false) {
    if ($fil != "." && $fil != ".." && !is_dir($mappe."/".$fil)) {
        $billeder[] = $fil;
    }
}
closedir($handle);

$sti  = "web_galleri/$billeder[$i]";

function resize( $filename, $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, 85 );
        imagedestroy( $dstim );
        imagedestroy( $srcim );
    }
# Udskriver billederne
sort($billeder);

while($i < $pics && $billeder[$i] != "") {
    echo '<div class="img"><a href="java script: PopUp('.$mappe.'/'.$billeder[$i].')"><img src="'.resize("$sti", 100, 10000000).'" border="1px"></a><h1>'.$billeder[$i].'</h1></div>';
    if ($sidecount == $byside) {
        $sidecount = 0;
    }
    $sidecount++;
    $i++;
}
?>
<hr style="clear:both;">
<?php
#Udskriver frem og tilbage links
if ($offset >= $pr_side) {
    $forrige = $offset-$pr_side;
    echo "<a href=\"?offset=$forrige\">Forrige</a> ";
}
if (count($billeder) > $offset+$pr_side) {
    $naeste = $offset+$pr_side;
    echo "<a href=\"?offset=$naeste\">Næste</a>";
}
?>
</body>
</html>
Avatar billede sw_red_6 Nybegynder
01. december 2006 - 08:42 #13
prøv om det her virker:
<html>
<head>
<script type="text/javascript">
function PopUp(pic) {
    window.open("popup.php?pic="+pic,"Titel","width=150,height=150");
}
</script>
<style type="text/css">
<!--
h1 {
    font-family: "Trebuchet MS";
    font-size: 10px;
    color: #999999;
    margin: 2px 0px 0px 0px;
}
.img {
float:left;
margin: 5px;
}
-->
</style>
</head>
<body>

<?php
# Indstillinger
$mappe = "web_galleri"; // Mappen med billeder
$pr_side = 6; // Antallet af billeder pr. side
$byside = 4; // Antal billeder ved siden af hinanden
$sidecount = 1;

if (isset($_GET['offset'])) {
    $offset = $_GET['offset'];
} else {
    $offset = 0;
}
$pics = $offset+$pr_side;
$i = $offset;

# Laver et array med billederne, så vi senere kan sortere
$handle = opendir($mappe);
while (($fil = readdir($handle)) !== false) {
    if ($fil != "." && $fil != ".." && !is_dir($mappe."/".$fil)) {
        $billeder[] = $fil;
    }
}
closedir($handle);

function resize( $filename, $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, 85 );
        imagedestroy( $dstim );
        imagedestroy( $srcim );
    }
# Udskriver billederne
sort($billeder);

while($i < $pics && $billeder[$i] != "") {
  $sti=$mappe.'/'.$billeder[$i]
    echo '<div class="img"><a href="java script: PopUp('.$mappe.'/'.$billeder[$i].')"><img src="'.resize("$sti", 100, 10000000).'" border="1px"></a><h1>'.$billeder[$i].'</h1></div>';
    if ($sidecount == $byside) {
        $sidecount = 0;
    }
    $sidecount++;
    $i++;
}
?>
<hr style="clear:both;">
<?php
#Udskriver frem og tilbage links
if ($offset >= $pr_side) {
    $forrige = $offset-$pr_side;
    echo "<a href=\"?offset=$forrige\">Forrige</a> ";
}
if (count($billeder) > $offset+$pr_side) {
    $naeste = $offset+$pr_side;
    echo "<a href=\"?offset=$naeste\">Næste</a>";
}
?>
</body>
</html>

Jeg tror problemet var $sti. Den indeholdte ikke det rigtige, det skulle jo helst være det rigtige billede der vises i popup'en, ikke? ;o)
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