Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 7 of 7
  1. #1
    New Coder
    Join Date
    Sep 2004
    Location
    South Bay, CA
    Posts
    11
    Thanks
    0
    Thanked 0 Times in 0 Posts

    generating a html page for each image in a gallery

    Hi, I'm editing a PHP gallery script. Right now it is set up so that when an thumbnail is clicked, it opens the fullsize image in a new window. I was wondering how I can have it put each fullsize image in an HTML page when it opens (that way I can edit the pages to match my website) rather than it just opening the image.

    Here is what I have set up so far:
    http://www.babyseashimmer.com/gallery/gallerytest2.php

    And here is my code:


    <html>
    <head>
    <title> My Collection</title>
    <link rel="stylesheet" type="text/css" href="styles.css">
    </head>

    <body bgcolor="99CCCC" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
    <p><?php // charset=ISO-8859-1
    /*
    * galerie.php - a simple gallery script
    * Copyright (C) 2002, 2003 Daniel Wacker <mail@wacker-welt.de>
    *
    * This program is free software; you can redistribute it and/or modify
    * it under the terms of the GNU General Public License as published by
    * the Free Software Foundation; either version 2 of the License, or
    * (at your option) any later version.
    *
    * This program is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    * GNU General Public License for more details.
    *
    * You should have received a copy of the GNU General Public License
    * along with this program; if not, write to the Free Software
    * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
    *
    * --
    * This script provides a simple gallery of all images that are located
    * in the script's directory and subdirectories.
    *
    * Requirements
    * - PHP >= 4.1.0
    * - GD Library ( >= 2.0.1 for good thumbnails)
    * - JPEG software
    * - PHP >= 4.3.0 or GD < 1.6 for GIF support
    * - libpng for PNG support
    *
    * Installation
    * Simply put this script in a folder of your web server and call it in a
    * web browser. Be sure that the script has permission to read the image
    * files and to create and write into the thumbnail folder.
    *
    * Attention:
    * This script tries to generate jpeg thumbnail files in a subfolder of the
    * gallery folder(s). The filenames look like "originalfilename.thumb.jpg".
    *
    /* ------------------------------------------------------------------------- */

    /* Select your language:
    * 'en' - English
    * 'de' - German
    */
    $lang = 'en';

    /* Select your charset
    */
    $charset = 'ISO-8859-1';

    /* How many images per page?
    */
    $maxpics = 20;

    /* Create thumbnails in this subfolder
    */
    $thumbdir = 'thumbs';

    /* Size of created thumbnails
    */
    $thumbsize = 150;

    /* Wether to show file names (true or false)
    */
    $filenames = false;

    /* Wether to show subdirectores (true or false)
    */
    $subdirs = false;

    /* Wether to show a title (true or false)
    */
    $title = false;

    /* Set the gallery root relative to the script's directory.
    *
    * If you include() this script, set the path relative to
    * the directory of the script, that does the include().
    */
    $picdir = '.';

    /* Set this to true if you include() this script.
    */
    $included = false;

    /* Set this to true, if you include() this script and want the images
    * to be shown inline.
    */
    $inline = true;

    /* Set the thumbnail background color, if you include() this script.
    */
    $bg = '99CCCC';

    /* ------------------------------------------------------------------------- */
    switch ($lang) {
    case 'de':
    $words = array(
    'gallery' => 'Galerie',
    'src' => 'Quelltext',
    'error' => 'Fehler',
    'php_error' => 'PHP Version 4.1 oder höher ist erforderlich.',
    'gd_error' => 'Die GD-Bibliothek wird benötigt. Siehe http://www.boutell.com/gd/.',
    'jpg_error' => 'Die JPEG-Bibliothek wird benötigt. Siehe ftp://ftp.uu.net/graphics/jpeg/.',
    'mkdir_error' => 'Schreibrecht im Verzeichnis ist erforderlich.',
    'opendir_error' => 'Das Verzeichnis "%1" kann nicht gelesen werden.'
    );
    break;
    case 'en':
    default:
    $words = array(
    'gallery' => 'gallery',
    'src' => 'source code',
    'error' => 'Error',
    'php_error' => 'PHP >= 4.1 is required.',
    'gd_error' => 'GD Library is required. See http://www.boutell.com/gd/.',
    'jpg_error' => 'JPEG software is required. See ftp://ftp.uu.net/graphics/jpeg/.',
    'mkdir_error' => 'Write permission is required in this folder.',
    'opendir_error' => 'The directory "%1" can not be read.'
    );
    }
    isset($_SERVER) || $error = error('php', array());
    function_exists('imagecreate') || $error = error('gd', array());
    function_exists('imagejpeg') || $error = error('jpg', array());
    @ini_set('memory_limit', -1);
    $jpg = '\.jpg$|\.jpeg$'; $gif = '\.gif$'; $png = '\.png$';
    $fontsize = 2;
    if (array_key_exists('src', $_REQUEST)) {
    ob_start();
    highlight_file(basename($_SERVER['PHP_SELF']));
    $src = ereg_replace('<font color="([^"]*)">', '<span style="color: \1">', ob_get_contents());
    $src = ereg_replace('</font>', '</span>', $src);
    ob_end_clean();
    }
    function w ($w) {
    global $words;
    return h($words[$w]);
    }
    function h ($w) {
    global $charset;
    return htmlentities($w, ENT_COMPAT, $charset);
    }
    function error ($w, $a) {
    return str_replace(array('%1'), $a, w($w .'_error'));
    }
    if (!$included) {
    echo('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <style type="text/css">
    body { font-family: sans-serif; background-color: 99CCCC; }
    hr { border-style: none; height: 1px; background-color: 99CCCC; color: 99CCCC }
    p { margin: 0px; padding: 0px }
    #pagenumbers { text-align: center; margin: 0px 1em 0px 1em }
    img { margin: 10px; border: none }
    a { text-decoration: none }
    #src');
    if ($filenames) echo(', div a p'); echo(" { font-size: small }\n");
    if ($filenames) {
    echo(".clear { clear: left }\n");
    echo("a:hover p { text-decoration: underline }\n");
    echo('div { width: ' . ($thumbsize + 20) . 'px; text-align: center; ');
    echo("float: left; margin: 1em }\n");
    }
    echo("</style>\n");
    echo("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=$charset\" />\n");
    if (isset($src)) {
    echo('<title>' . w('Gallery') . ': ' . w('src') . "</title>\n");
    echo("</head>\n<body>\n");
    echo('<h1>' . w('gallery') . ': ' . w('src') . "</h1>\n<hr />\n<pre>");
    echo("$src</pre>\n</body>\n</html>");
    exit;
    }
    }
    if (array_key_exists('dir', $_REQUEST) && $subdirs) $dir = $_REQUEST['dir'];
    else $dir = '';
    if (!empty($_SERVER['PATH_TRANSLATED'])) $d = dirname($_SERVER['PATH_TRANSLATED']);
    elseif (!empty($_SERVER['SCRIPT_FILENAME'])) $d = dirname($_SERVER['SCRIPT_FILENAME']);
    else $d = getcwd();
    $delim = (substr($d, 1, 1) == ':') ? '\\' : '/';
    $rp = function_exists('realpath');
    if ($rp) $root = realpath($d . $delim . $picdir);
    else $root = $d . $delim . $picdir;
    if ($rp) $realdir = realpath($root . $dir);
    else $realdir = $root . $dir;
    if (substr($realdir, 0, strlen($root)) != $root) $realdir = $root;
    $dirname = substr($realdir, strlen($root));
    $dirnamehttp = $picdir . $dir;
    if ($delim == '\\') $dirnamehttp = strtr($dirnamehttp, '\\', '/');
    if (substr($dirnamehttp, 0, 2) == './') $dirnamehttp = substr($dirnamehttp, 2);
    if (empty($dirnamehttp)) $dirnamehttp = '.';
    if ($subdirs) {
    if (empty($dirname)) $ti = ''; else $ti = ": $dirname";
    } else $ti = '';
    if (!$included) {
    if (isset($error)) echo("<title>$error</title>");
    else echo('<title>' . w('gallery') . h($ti) . "</title>\n");
    echo("</head>\n<body>\n");
    }
    if (!($d = @opendir($realdir))) $error = error('opendir', array($realdir));
    if (isset($error)) echo("<p style=\"color: red\">$error</p>\n");
    else {
    if ($title) echo('<h1>' . w('gallery') . h($ti) . "</h1>\n<hr />\n");
    $dirs = $pics = array();
    $query = $jpg;
    if (function_exists('imagecreatefromgif')) $query .= "|$gif";
    if (function_exists('imagecreatefrompng')) $query .= "|$png";
    while (false !== ($filename = readdir($d))) {
    if ($filename == $thumbdir
    || ($filename == '..' && $dirname == '')
    || ($filename != '..' && substr($filename, 0, 1) == '.')) continue;
    $file = $realdir . $delim . $filename;
    if (is_dir($file)) $dirs[] = $filename;
    elseif (eregi($query, $file)) $pics[] = $filename;
    }
    closedir($d);
    sort($dirs);
    sort($pics);
    $urlsuffix = '';
    foreach ($_GET as $v => $r) {
    if (!in_array($v, array('dir', 'pic', 'offset'))) $urlsuffix .= "&$v=" . urlencode($r);
    }
    if ($included && $inline && array_key_exists('pic', $_REQUEST)) {
    $pic = $_REQUEST['pic'];
    echo("<div id=\"picture\">\n");
    echo('<img src="' . h("$dirnamehttp/{$pics[$pic]}") . '" alt="' . h(basename($pics[$pic])) . '"');
    list($width, $height, $type, $attr) = @getimagesize($pic);
    if (!empty($width)) echo(" style=\"width: {$width}px; height: {$height}px\"");
    echo(" />\n");
    $url = ($dirname == '') ? '?' : '?dir=' . urlencode($dirname) . '&';
    echo("<hr />\n");
    if ($pic > 0)
    echo('<a href="' . h($url) . 'pic=' . ($pic - 1) . h($urlsuffix) . '">[&lt;]</a> ');
    if ($pic >= $maxpics)
    $u = "{$url}offset=" . (floor($pic / $maxpics) * $maxpics) . $urlsuffix;
    else {
    if (array_key_exists('dir', $_REQUEST)) {
    $u = substr($url, 0, strlen($url) - 1) . $urlsuffix;
    } else {
    $u = ereg_replace('^([^?]+).*$', '\1', $_SERVER['REQUEST_URI']);
    if (!empty($urlsuffix)) {
    if (strstr($u, '?') === false) $u .= '?' . substr($urlsuffix, 1);
    else $u .= $urlsuffix;
    }
    }
    }
    echo('<a href="' . h($u) . '">[-]</a>');
    if ($pic + 1 < sizeof($pics))
    echo(' <a href="' . h($url) . 'pic=' . ($pic + 1) . h($urlsuffix) . '">[&gt;]</a>');
    echo("\n</div>\n");
    } else {
    if (sizeof($dirs) > 0 && $subdirs) {
    echo("<ul id=\"directories\">\n");
    foreach ($dirs as $filename) {
    if ($rp) $target = substr(realpath($realdir . $delim . $filename), strlen($root));
    else $target = substr($realdir . $delim . $filename, strlen($root));
    if ($delim == '\\') $target = strtr($target, '\\', '/');
    if ($target == '') {
    $url = ereg_replace('^([^?]+).*$', '\1', $_SERVER['REQUEST_URI']);
    if (!empty($urlsuffix)) {
    if (strstr($url, '?') === false) $url .= '?' . substr($urlsuffix, 1);
    else $url .= $urlsuffix;
    }
    } else $url = '?dir=' . urlencode($target) . $urlsuffix;
    echo('<li><a href="' . h($url) . '">' . h($filename) . "</a></li>\n");
    }
    echo("</ul>\n<hr />\n");
    }
    if (($num = sizeof($pics)) > 0) {
    if (array_key_exists('offset', $_REQUEST)) $offset = $_REQUEST['offset'];
    else $offset = 0;
    if ($num > $maxpics) {
    echo("<p id=\"pagenumbers\">\n");
    for ($i = 0; $i < $num; $i += $maxpics) {
    $e = $i + $maxpics - 1;
    if ($e > $num - 1) $e = $num - 1;
    if ($i != $e) $b = ($i + 1) . '-' . ($e + 1);
    else $b = $i + 1;
    if ($i == $offset) echo("<b>$b</b>");
    else {
    $url = ($dirname == '') ? '?' : '?dir=' . urlencode($dirname) . '&amp;';
    echo("<a href=\"{$url}offset=$i" . h($urlsuffix) . "\">$b</a>");
    }
    if ($e != $num - 1) echo(' |');
    echo("\n");
    }
    echo("</p>\n<hr />\n");
    }
    echo("<p id=\"pictures\">\n");
    for ($i = $offset; $i < $offset + $maxpics; $i++) {
    if ($i >= $num) break;
    $filename = $pics[$i];
    $file = $realdir . $delim . $filename;
    if (!is_readable($file)) continue;
    if (!is_dir($realdir . $delim . $thumbdir)) {
    $u = umask(0);
    if (!@mkdir($realdir . $delim . $thumbdir, 0777)) {
    echo('<p style="color: red; text-align: center">' . w('mkdir_error') . '</span>');
    break;
    }
    umask($u);
    }
    $thumb = $realdir . $delim . $thumbdir . $delim . $filename . '.thumb.jpg';
    if (!is_file($thumb)) {
    if (eregi($jpg, $file))
    $original = @imagecreatefromjpeg($file);
    elseif (eregi($gif, $file))
    $original = @imagecreatefromgif($file);
    elseif (eregi($png, $file))
    $original = @imagecreatefrompng($file);
    else continue;
    if ($original) {
    if (function_exists('getimagesize'))
    list($width, $height, $type, $attr) = getimagesize($file);
    else continue;
    if ($width > $height && $width > $thumbsize) {
    $smallwidth = $thumbsize;
    $smallheight = floor($height / ($width / $smallwidth));
    $ofx = 0; $ofy = floor(($thumbsize - $smallheight) / 2);
    } elseif ($width < $height && $height > $thumbsize) {
    $smallheight = $thumbsize;
    $smallwidth = floor($width / ($height / $smallheight));
    $ofx = floor(($thumbsize - $smallwidth) / 2); $ofy = 0;
    } else {
    $smallheight = $height;
    $smallwidth = $width;
    $ofx = floor(($thumbsize - $smallwidth) / 2);
    $ofy = floor(($thumbsize - $smallheight) / 2);
    }
    }
    if (function_exists('imagecreatetruecolor'))
    $small = imagecreatetruecolor($thumbsize, $thumbsize);
    else $small = imagecreate($thumbsize, $thumbsize);
    sscanf($bg, "%2x%2x%2x", $red, $green, $blue);
    $b = imagecolorallocate($small, $red, $green, $blue);
    imagefill($small, 0, 0, $b);
    if ($original) {
    if (function_exists('imagecopyresampled'))
    imagecopyresampled($small, $original, $ofx, $ofy, 0, 0, $smallwidth, $smallheight, $width, $height);
    else
    imagecopyresized($small, $original, $ofx, $ofy, 0, 0, $smallwidth, $smallheight, $width, $height);
    } else {
    $black = imagecolorallocate($small, 0, 0, 0);
    $fw = imagefontwidth($fontsize);
    $fh = imagefontheight($fontsize);
    $htw = ($fw * strlen($filename)) / 2;
    $hts = $thumbsize / 2;
    imagestring($small, $fontsize, $hts - $htw, $hts - ($fh / 2), $filename, $black);
    imagerectangle($small, $hts - $htw - $fw - 1, $hts - $fh, $hts + $htw + $fw - 1, $hts + $fh, $black);
    }
    imagejpeg($small, $thumb);
    }
    if ($filenames) echo('<div>');
    if ($included && $inline) {
    echo('<a href="?');
    if (array_key_exists('dir', $_REQUEST)) echo('dir=' . urlencode($_REQUEST['dir']) . '&amp;');
    echo('pic=' . $i . h($urlsuffix));
    } else echo('<a href="' . h("$dirnamehttp/$filename"));
    echo('" target="blank"');
    echo('><img src="' . h("$dirnamehttp/thumbs/$filename.thumb.jpg"));
    echo('" ');
    echo("width: {$thumbsize}px; height: {$thumbsize}px\" />");
    if ($filenames) echo('<p>' . h($filename) . '</p>');
    echo('</a>');
    if ($filenames) echo("</div>\n"); else echo("\n");
    }
    echo("</p>\n");
    if (!$included) {
    echo('<hr');
    if ($filenames) echo(' class="clear"');
    echo(" />\n");
    }
    }
    }

    }
    if (!$included) echo("</body>\n</html>");
    ?>


    </body>
    </html>

  • #2
    New Coder
    Join Date
    Jun 2004
    Posts
    51
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Hi,

    Could you not pass the image name as a query string and then use GET or POST to retrieve it in the page you set up for viewing the full size images in a similar way to the way you are using the offset query string in http://www.babyseashimmer.com/gallery/gallerytest2.php?offset=20. Something along the lines of:

    http://www.babyseashimmer.com/gallery/gallerytest2.php?image=2collector.jpg

  • #3
    New Coder
    Join Date
    Sep 2004
    Location
    South Bay, CA
    Posts
    11
    Thanks
    0
    Thanked 0 Times in 0 Posts
    I'm sorry, I don't quite understand. I'm not very good with php. It took me like an hour to figure out how to make it open in a new window.

  • #4
    New Coder
    Join Date
    Jun 2004
    Posts
    51
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Instead of having your script linking the thumbnails directly to the full sized images (i.e. instead of having http://www.babyseashimmer.com/gallery/2playset.jpg etc...) you can link the thumbnails to something of the form http://www.babyseashimmer.com/gallery/viewpic.php?image=2collector.jpg with the value of image being generated by the script and uniquely corresponding to the correct full size image as the script iterates through your directories.

    You will then set up viewpic.php with any HTML/CSS formatting you want and use:
    PHP Code:
    $image $_GET['image']; 
    to get the value of image from the URL and:
    PHP Code:
     echo "<img src='$image' />" 
    to display the image.

    Does that help?

  • #5
    New Coder
    Join Date
    Sep 2004
    Location
    South Bay, CA
    Posts
    11
    Thanks
    0
    Thanked 0 Times in 0 Posts
    yea, that deffinately makes more since to me! Thanks a bunch!

    Here is what I have for the viewpic.php page:

    Code:
    <html>
    <head>
    <title>Gallery</title>
    </head>
    
    <body>
    <?php 
     $image = $_GET['image']; 
     echo "<img src='$image' />"  
     ?>
    </body>
    </html>
    I'm not positive if that's right or not?

    And I'm not quite sure what to do on the gallery page. I know what line I'm supposed to be editing:

    Code:
       } else echo('<a href="' . h("$dirnamehttp/$filename"));
    But I'm not sure what to do to make it generate the link with the image name in it. Something like:

    Code:
       } else echo('<a href="'viewpic.php?"));
    wow I have no clue. :(

  • #6
    New Coder
    Join Date
    Sep 2004
    Location
    South Bay, CA
    Posts
    11
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Ok, I'm trying! hehe I've gotten this:

    Code:
    } else echo('<a href="');
    	echo('viewpic.php?image=');
    	echo('$filename.jpg"');
    But I guess $filename isn't what I'm supposed to use to get the image name there? It's doing this:
    Code:
    <a href="viewpic.php?image=$filename.jpg"

  • #7
    New Coder
    Join Date
    Sep 2004
    Location
    South Bay, CA
    Posts
    11
    Thanks
    0
    Thanked 0 Times in 0 Posts
    yay!!!!!!!!!!!!!! I got it! It helps to talk things out I guess. hehe!

    http://www.babyseashimmer.com/gallery/gallerytest4.php

    thank you thank you thank you!


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •