Eli totanoinniin. Tässä olisi ainakin nimen mukaan jonkin sorttinen galleriasrkitpti.Koodi tekee itse thumbnailit sun muut hienot jutut :P Skripti on täysin käyttövalmis. Esimerkkisivu tulee hetikohta, kun olen saanut siitä henk. kohtaiset tiedot niiltä pois :D
<?php /* valitse charset */ $charset = 'ISO-8859-1'; /* Montako kuvaa per sivu? */ $maxpics = 20; /* tekee sormenkynnet alikansioon nimeltä thumbs */ $thumbdir = 'thumbs'; /* sormenkynnen koko */ $thumbsize = 150; $filenames = false; $subdirs = true; $title = true; /* Gallerian root kansio. * oletuksena on se sama, johon skripti on laitettu, */ $picdir = '.'; /* laita true, jos includetat skriptin. */ $included = false; /* laita true, jos includetat skriptin ja haluat, että * kuvat näytetään järjestyksessä. */ $inline = true; /* sormenkynsien taustaväri. */ $bg = 'FFFFFF'; /* ------------------------------------------------------------------------- */ $words = array( 'gallery' => 'gallery', 'error' => 'Error', 'php_error' => 'PHP >= 4.1 pakollinen.', 'gd_error' => 'GD Library pakollinen.', 'jpg_error' => 'jpg tuki pakollinen', 'mkdir_error' => 'kirjoitusoikeudet pakollisia', 'opendir_error' => 'kansio "%1" ei ole luettavissa.' ); isset($_SERVER) || ($error = error('php')); function_exists('imagecreate') || ($error = error('gd')); function_exists('imagejpeg') || ($error = error('jpg')); if (function_exists('ini_set')) @ini_set('memory_limit', -1); $jpg = '\.jpg$|\.jpeg$'; $gif = '\.gif$'; $png = '\.png$'; $fontsize = 2; function word ($word) { global $words; return html($words[$word]); } function html ($word) { global $charset; return htmlentities($word, ENT_COMPAT, $charset); } function error ($word, $arg = '') { global $words; return html(str_replace('%1', $arg, $words[$word .'_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> <meta http-equiv="content-type" content="text/html; charset=' . $charset . '" /> <style type="text/css"> body { font-family: sans-serif } hr { border-style: none; height: 1px; background-color: silver; color: silver } p { margin: 0px; padding: 0px } #pagenumbers { text-align: center; margin: 0px 1em 0px 1em } img { margin: 10px; border: none } a { text-decoration: none } '); if ($filenames) { echo('div a p { font-size: small } a:hover p { text-decoration: underline } div { width: ' . ($thumbsize + 20) . 'px; text-align: center; float: left; margin: 1em } '); } echo("</style>\n"); } $delim = DIRECTORY_SEPARATOR; 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; $dir = ''; } $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 = '.'; $ti = ($subdirs && !empty($dirname)) ? ": $dirname" : ''; if (!$included) { if (isset($error)) echo("<title>$error</title>"); else echo('<title>' . word('') . html($ti) . "</title>\n"); echo("</head>\n<body>\n"); } if (($d = @opendir($realdir)) === false) $error = error('opendir', array($realdir)); if (isset($error)) echo("<p style=\"color: red\">$error</p>\n"); else { if ($title) echo('<h1>' . word('Türgi pildid') . html($ti) . "</h1>\n<hr />\n"); $dirs = $pics = array(); $query = $jpg; if (function_exists('imagecreatefromgif')) $query .= "|$gif"; if (function_exists('imagecreatefrompng')) $query .= "|$png"; while (($filename = readdir($d)) !== false) { 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="' . html("$dirnamehttp/{$pics[$pic]}") . '" alt="' . html(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="' . html($url) . 'pic=' . ($pic - 1) . html($urlsuffix) . '">[<]</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="' . html($u) . '">[-]</a>'); if ($pic + 1 < sizeof($pics)) echo(' <a href="' . html($url) . 'pic=' . ($pic + 1) . html($urlsuffix) . '">[>]</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="' . html($url) . '">' . html($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) . '&'; echo("<a href=\"{$url}offset=$i" . html($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">' . word('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']) . '&'); echo('pic=' . $i . html($urlsuffix)); } else echo('<a href="' . html("$dirnamehttp/$filename")); echo('"><img src="' . html("$dirnamehttp/thumbs/$filename.thumb.jpg")); echo('" alt="' . html($filename) . '" style="'); echo("width: {$thumbsize}px; height: {$thumbsize}px\" />"); if ($filenames) echo('<p>' . html($filename) . '</p>'); echo('</a>'); if ($filenames) echo("</div>\n"); else echo("\n"); } echo("</p>\n"); } } } if (!$included) echo("</body>\n</html>"); ?>
Ei sentään ihan suora kopio täältä, otettu jopa copyrightit pois.
Haha mikä siinä on ku ei ite jakseta tehä? Tai ees kopioida kunnolla (alkuperäisestä huonompaan päin, ei näin)? Sisennykset & rivien jaottelemattomuus on karseaa katseltavaa, ei yhtään kommenttia itse toiminnoissa ja lisäksi käännös on surkea.
Aihe on jo aika vanha, joten et voi enää vastata siihen.