[ dragan.zm @ 06.03.2006. 10:50 ] @
Zdravo svima ja sam novi clan, mozete li mi pomoci oko ove galerije.
Hteo bi da mi slike cita iz foldera (to i radi) al da mi uvjek budu prve one koje sam zadnje stavio na server i da klikom otvara novi prozor. Te ako je moguce tam gdje pise Martch bude brojem mjesec koji je u godini.

[ dragan.zm @ 06.03.2006. 10:51 ] @
Code:


<?php

$limit = 8;            // number of thumbs to show per page.
$w = 80;              // max width of thumbnails.
$h = 59;              // max height of thumbnails.
$show_folders = 1;     // Set to 1 to show folder list, 0 to turn off
$isize = 1;            // Set to 1 to display image filesize
$idim = 1;             // Set to 1 to display image dimensions
$show_name = 1;        // Set to 1 to show image name
$hide_extension = 0;   // Set to 1 to hide image extensions from name (jpg, gif, png)

//============================================
// No further options below here.

if($pg = $_GET['pg'])
{
  $thumb = (($pg-1)*$limit);
  $i = $thumb;
}
//if($thumb = $_GET['thumb'])
//  $i = $thumb;
else
  $i = 0;

// get the directory name
$dirlist = dirname($_SERVER['SCRIPT_NAME']);

// split it up
$subdir = explode("/", $dirlist);

// reverse it so directory above images is listed
$subdir = array_reverse($subdir);

// page title name is root dir.
$title = str_replace("_", " ", $subdir['0']);

//$my_uri = "http://" . $_SERVER['HTTP_HOST'] . $HTTP_SERVER_VARS["SCRIPT_NAME"];

if(ereg("\.\.", $_GET['d']))
  header ("Location: ?");


?>
<html>
<head>
<title>Foto galerija- <? echo $title; ?></title>
<style type="text/css">

body {background-color: #383F47; text-align: center; font-family: verdana; font-size: 12px; color: #000;}
h1 {font-size: 16px; margin: 1em; }

#dirnav {height: 16px; position: relative; margin: auto auto 5px auto; clear: both;  border-bottom: 1px solid #aaa; text-align: center; padding: 3px; }
#dirnav ul, #dirnav li {margin: auto; padding: 0; list-style-type: none; }
#dirnav li {float: left; text-align: center;  }
#dirnav a {display: block; padding: 2px 5px 2px 5px; }

#thumbs {width: 100%; margin: 10px; border: 1px solid black; clear: both; text-align: center; }
p.thumb {width: <? echo $w+18; ?>px; height: <? echo $h+32; ?>px; margin: 1em; padding: 3px; float: left; font-size: 12px; text-align: center; background-color: #53585D}

#nav {position: relative; margin: auto; clear: both;  border-top: 1px solid #aaa; text-align: center; }
#nav ul, #nav li {margin: auto; padding: 0; list-style-type: none; }
#nav li {float: left; text-align: center;  }
#nav li.current a.page {font-weight: bold; color: #ddd; }
#nav a {}
#nav a.page {display: block; padding: 2px 5px 2px 5px; }
#nav a.prev, #nav a.next, #nav .prev, #nav .next {display: block; width: 65px; padding: 2px 5px 2px 5px; }
#nav a:hover { }

a {color: #999; text-decoration: none; }
a:hover, a:active {color: #d0d0d0; }
a img {border: 1px solid #777; }
a:hover img {border: 1px solid #d0d0d0; }
a.page {color: #999; }

</style>

</head>

<body>

<?
//-------------------------------- Directory Navigation -----------------------------
function dir_list($dir)
{
  global $title;
  $dlist = array();

  if ($hdir = opendir('./'.$dir))
  {
    while ($obj = readdir($hdir))
      {
        if (((preg_match("/^\./",$obj)==0) && (!eregi('^(.*).[php]$', $obj))) && is_dir($dir.$obj))
        //if(is_dir($dir.$obj))
          $dlist[] = $obj;
      }
    closedir($hdir);
  }
  else
    die('Nemoguce izlistat fajlove iz direktorija ' . $dir);

  asort($dlist);
  echo "<div id='dirnav'><ul>\n<li>Folderi:</li>\n";

  echo "<li> <a href='?'>$title &raquo; </a></li>\n";
    $dirtree = explode("/", $_GET['d']); // parse directory tree from passed "d"
  if(!$_GET['d'])
    array_shift($dirtree); // remove redundant "." directory from tree
    foreach ($dirtree as $dirsub)
    {
        echo "<li> <a href='?d=$dirparent$dirsub'>$dirsub &raquo; </a></li>\n";
        $dirparent .= $dirsub.'/';
    }

  foreach ($dlist as $link)
  {
    echo "<li><a href='?d=$dir$link'>[$link]</a></li>\n";
  }
  echo "</ul>\n</div>\n";
}



//-------------------------------------Get image file size ----------------------------------
function getfilesize($size)
{
  $units = array(' B', ' KB', ' MB', ' GB', ' TB');
  for ($i = 0; $size > 1024; $i++) { $size /= 1024; }
  return round($size, 2).$units[$i];
}



//-------------------------------------Set which folder we are viewing----------------



if($_GET['d'])
{
  $d = $_GET['d'].'/';
  $dd = 'd='.$_GET['d'].'&'; // for use in passing to URL strings
  $current_dir .= $d;
}

 opendir($current_dir);

if ($show_folders)
  dir_list($current_dir);



//--------------------------------------- Create list of Images ------------------------
$list = array();

if ($dir = opendir('./'.$current_dir))
{
  while ($file = readdir($dir))
  {
      //if((is_file($file)) && ((!eregi('^(.*).[php]$', $file)) && (!eregi('^(\.htaccess)$', $file))))

      // find all JPG, PNG or GIF images
      if (eregi('^(.+\.(((j|J)(p|P)(g|G))|((g|G)(i|I)(f|F))|((p|P)(n|N)(g|G))))$', $file))
        $list[] = $file;
  }
    closedir($dir);
}

asort($list); // sort alpha
$numtotal = count($list); //total number of thumbs

if ($thumb)
{
  $s = 0;
  while($s < $thumb)
  {
    array_shift($list);
    $s++;
  }
}

$numremain = count($list); // total remaining thumbs



//-------------------------------------- Create Thumbnails and Gallery ------------------
foreach ($list as $pic)
{
       $fp = $current_dir.$pic;
       if($i < $thumb+$limit)
       {
      //echo "<p class='thumb'><tt><a href='$current_dir$pic'><img src='tn/$pic' alt='$pic' /><br />$pic</a> - [".getfilesize(filesize($fp))."]</tt></p>\n";
      $image = $currentdir.$pic;
      $i_size = getfilesize(filesize($fp));
      $i_area = getimagesize($fp);
      $i_width = $i_area[0];
      $i_height = $i_area[1];
      //$i_mtime = date("d F Y ", filemtime($fp));

      if ($hide_extension)
        $extensions = array(".jpg", ".JPG", ".gif", ".GIF", ".png", ".PNG");
      if ($show_name)
       $name = str_replace($extensions, '', $pic);
      echo "<p class='thumb'>
                  <tt>
                      <a href='$current_dir$pic'><img src='image_resize.php?i=$d$pic&w=$w&h=$h' alt='$pic' /><br />
                      $name<br /></a>\n";
        if($idim)
          echo "            [$i_width x $i_height]";
          echo "<br>";
          echo  date("d F Y", filemtime($pic));
          echo "<br>";
        if($idim && $isize)
            echo " - ";
        if ($isize)
            echo "            [$i_size]";
      echo "        <br />
                  </tt>
              </p>\n";
      $i++;
    }
}




//---------------------------------------Page Navigation -----------------------------
$page = 0;
if(!$pg)
  $pg = 1;
echo "<div id='nav'>\n<ul>\n";

if($thumb > 0)
  echo "<li><a class='prev' href='?".$dd."pg=".($pg-1)."'>&laquo; Prev $limit</a></li>\n";
else
  echo "<li><div class='prev'>&laquo; Prev $limit</div></li>";

while($page*$limit < $numtotal)
{
  $page ++;
  unset($cur);
  if($page == $pg)
  {
    $cur = ' class="current"';
  }
  echo "<li$cur><a class='page' href='?".$dd."pg=$page'>[".($page)."]</a></li>\n";
}

if($numremain > $limit)
  echo "<li><a class='next' href='?".$dd."pg=".($pg+1)."'>Next $limit &raquo;</a></li>\n";
else
  echo "<li><div class='next'>Next $limit &raquo;</div></li>\n";


?>

</body>
</html>

[ Nemanja Avramović @ 06.03.2006. 18:51 ] @
E mrzi me da prepravljam galeriju ali evo ti nesto sto sam ja pravio. Ovo cita slike sa diska i smeshta ih u bazu (samo zato da bi najnovije bile poslednje [na prvoj strani]). Imas folder ./slike/ i tu ubacujes velike slike a u ./slike/thumbs/ ubacujes male slike. Slike uploadujes preko FTP-a ili kako hoces ali nema web upload-a i GD-a i slicnih stvarcica (galerija je pravljena za odredjeni sajt).
Kada uploadujes nove slike ili obrises neku moras da pozoves ./admin/gal_resync.php
Moras da podesis sledeca dva fajla:

- gal_connection.php
Code:

//folder with images [files]
$picdir = "./slike/"; //start with ./ and include backslash at the end!!!

//MySQL data [table]
$pics = "slike";

//MySQL data [connection]
$dbname = "razno";
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";


- gal_index.php
Code:

// Broj ispisa po strani
$per_page = 9; // koliko slika po strani
$perrow = 3; //koliko slika u redu


Samo to podesis, kreiras tabelu iz tables.sql, uploadujes slike (i ove fajlove), pozoves gal_resync.php iz admin foldera i eto ti galerije.

Srecno i vichi ako negde zapne
[ dragan.zm @ 08.03.2006. 07:47 ] @
Hvala Drug, radi galerija extra. Mislim da kad bi se dodala mogucnost da sam kreira thumbse bila bi jedna od najjednostavnijih i boljih galerija.

Volim ovako jednostavan kod.
[ SmilieBG @ 08.03.2006. 08:49 ] @
pogledaj prvu stranicu PHP foruma, vec je bilo reci o kreiranju thumbnaila ;)

Poz,
Sale
[ migel @ 08.03.2006. 12:17 ] @
Evo ti code za kreiranje thumbnail-a, samo prepravi "gal_index.php".

Code:
/*kreiranje thumbnaila*/
/*     pocetak        */

//dobijanje dimenzija slike i ucitavanje rezultata u niz
$mythumb = getimagesize("slike/".$filename);


function imageResize($width, $height, $target) { 

//funkcija za promenu dimenzije slike  

if ($width > $height) { 
$percentage = ($target / $width); 
} else { 
$percentage = ($target / $height); 


//dobijanje nove velicine slike i zaokruzivanje rezultata
$width = round($width * $percentage); 
$height = round($height * $percentage); 

//vracanje nove velicine u html image tag formatu... 

return "width=\"$width\" height=\"$height\""; 



$nova_velicina = imageResize($mythumb[0], $mythumb[1], 150);//nova velicina slike

echo "<td valign='center' align='center'><a href='".$picdir . $filename."' title='$name' target='_blank'>
<img src='slike/$filename'  border='0' $nova_velicina alt='$name'><br />$name</a></td> ";//prikazivanje slike...

/*kreiranje thumbnaila*/
/*        kraj        */


[Ovu poruku je menjao migel dana 08.03.2006. u 13:48 GMT+1]
[ Nemanja Avramović @ 08.03.2006. 15:48 ] @
Pa koliko sam skontao ovo samo stavlja width i height atribute a ne resize-uje sliku (kao fajl). Sajt za koji sam pravio galeriju nema GD tako da nisam radio automatsko pravljenje thumbs-a... inace to nije problem da se uradi
[ migel @ 08.03.2006. 20:23 ] @
Citat:
JaHvram: Pa koliko sam skontao ovo samo stavlja width i height atribute a ne resize-uje sliku (kao fajl). Sajt za koji sam pravio galeriju nema GD tako da nisam radio automatsko pravljenje thumbs-a... inace to nije problem da se uradi ;)


U pravu si. Moja greska. Skript od malopre nece smanjiti velicinu fajla vec samo dimenzije slike na browser-u. Evo pravog koda. Ovaj skript podesava velicinu slike kao fajla. To radi pomocu funkcije ImageCopyResized.

Treba da se napravi »resize_image.php« i u njega upise sledeci kod:
Code:

<?php

$image = $HTTP_GET_VARS['image'];

if (!$max_width)
  $max_width = 100;
if (!$max_height)
  $max_height = 80;

$size = GetImageSize($image);
$width = $size[0];
$height = $size[1];

$x_ratio = $max_width / $width;
$y_ratio = $max_height / $height;

if ( ($width <= $max_width) && ($height <= $max_height) ) {
  $tn_width = $width;
  $tn_height = $height;
}
else if (($x_ratio * $height) < $max_height) {
  $tn_height = ceil($x_ratio * $height);
  $tn_width = $max_width;
}
else {
  $tn_width = ceil($y_ratio * $width);
  $tn_height = $max_height;
}

$src = ImageCreateFromJpeg($image);
$dst = ImageCreate($tn_width,$tn_height);
ImageCopyResized($dst, $src, 0, 0, 0, 0,
    $tn_width,$tn_height,$width,$height);
header('Content-type: image/jpeg');
ImageJpeg($dst, null, -1);
ImageDestroy($src);
ImageDestroy($dst);

?>

U fajlu »gal_index.php« treba da se zameni sledeci deo koda:
Umesto ovoga
Code:

echo "<td valign='center' align='center'>
<a href='".$picdir . $filename."' title='$name' target='_blank'>
<img src='".$picdir ."thumbs/". $filename."' 
border='0' width='300' height='200' alt='$name'>
<br />$name</a></td> ";

Treba ubaciti
Code:

echo "<td valign='center' align='center'>
<a href='".$picdir . $filename."' title='$name' target='_blank'>
<img src='resize_image.php?image=slike/$filename' 
border='0'  alt='$name'>
<br />$name</a></td> ";


To je sve. Sad bi trebalo da bude OK.
Pozdrav
[ Nemanja Avramović @ 08.03.2006. 22:20 ] @
koristi ImageCopyResampled... i nek se fajl zove gal_resize.php - da bude u stilu

[Ovu poruku je menjao JaHvram dana 08.03.2006. u 23:26 GMT+1]
[ dragan.zm @ 11.03.2006. 22:01 ] @
Hvala Vam puno, ali imam bed jedan. Obrisao sam mysql bazu a izgubio sam upit sto sma imao, moze li mi neko napraviti mysql upit koji ce mi napraviti bazu.

HVALA
[ Nemanja Avramović @ 11.03.2006. 22:18 ] @
Pa baze pravis sa CREATE DATABASE 'ime_baze';

hehe... a tabela za moju galeriju:
Code:
CREATE TABLE `slike` (
`id` INT NOT NULL AUTO_INCREMENT ,
`filename` TEXT NOT NULL ,
`md5` TEXT NOT NULL ,
PRIMARY KEY ( `id` )
);
[ dragan.zm @ 16.03.2006. 11:23 ] @
Zasto mi neke slike izgledaju skrpz lose, jedva se vidi dobiju neku prljavu pepelastu boju kad se thmb sam pravi.
[ migel @ 16.03.2006. 12:42 ] @
Citat:
dragan.zm: Zasto mi neke slike izgledaju skrpz lose, jedva se vidi dobiju neku prljavu pepelastu boju kad se thmb sam pravi.


Zameni sledece:
Code:
$dst = ImageCreate($tn_width,$tn_height);

Sa ovim:
Code:
$dst = ImageCreateTrueColor($tn_width,$tn_height);
[ dragan.zm @ 16.03.2006. 22:44 ] @
Hvala puno, probao sam da napravim da mi se slike otvaraju u popup prozoru ali je problem taj u java kodu imaju ' znakovi , tako da kad one ispred " prepravim na ' i ovi drugi ostanu i nece da radi, kako vi to rijesavate.
[ dragan.zm @ 19.03.2006. 20:01 ] @
Molim vas jel ima ko da pomogne da mi se otvaraju slike u popupu ev vec 5 dana pokusavam to uraditi i nece.
[ Nemanja Avramović @ 20.03.2006. 11:31 ] @
Pa najlakse je da ovo:

Code:
echo "<td valign='center' align='center'>
<a href='".$picdir . $filename."' title='$name' target='_blank'>
<img src='resize_image.php?image=slike/$filename' 
border='0'  alt='$name'>
<br />$name</a></td> ";


zamenis sa:

Code:
echo "<td valign='center' align='center'>
<a target='_blank' href='".$picdir . $filename."' title='$name' target='_blank'>
<img src='resize_image.php?image=slike/$filename' 
border='0'  alt='$name'>
<br />$name</a></td> ";


...i to ce otvarati u novom prozoru. A za popup ces morati preko javascripta sa window.open...
[ dragan.zm @ 21.03.2006. 09:21 ] @
Ma znam to, al bas sam zapeo, fora je da u kodu imam:

<a href="#" onClick="poptastic('http://www.google.com'); return false;">Otvori popup</a>


e sad ako stavim ovo na vrh iznad php koda radi, ako stavim u kod neradi skripta vise jer sadrzi " znakove, ako zamjenim " sa ' onda bi to bilo ok da ti isti znak nema između google.com , pa zar niko nema da to uradi to je minuta posla ko je vec radio s tim.
[ Nemanja Avramović @ 21.03.2006. 19:09 ] @
Pa da sam radio sa tim i da znam napamet kako da ti pomognem rekao bih ti, ali zaista ne znam a trenutno nemam vremena da isprobavam. Da li si probao sa \' i/ili \" - mozda uspe...
[ migel @ 22.03.2006. 11:35 ] @
Ubaci Javascript funciju:
Code:

<script>
<!--
        
  function PopOpen(ime) 
  {
        
    prozor = window.open (ime, 'Slika', 
            'height=400,width=500,location=no,menubar=no,resizable=no,status=no,toolbar=no,scrollbars=yes');
  } 

//-->
</script>


i promeni gal_index.php:
Code:

$href= $picdir . $filename;
echo "<td valign='center' align='center'>
<a href= \"javascript:PopOpen('$href');\" title='$name'><img src='gal_resize.php?image=slike/$filename'
border='0'  alt='$name'><br />$name</a></td> ";