Dynamic Gallery - Динамична галерия
Здравейте на всички! Преди една седмица знаех да пиша само калкулатори , а сега... Ама хайде да пристъпваме към самата галерия! Тази галерия автоматично изкарва картинките от дадена директория, прави им малки копия, създава връзки към големите, като се отварят в друг прозорец, показва оригиналният им размер и ги подрежда в три колони! Забравих да кажа, че включва и възможност за качване на снимки, като те се записват в отделна директория и вие трябва да ги одобрите и копирате в директорията където са другите снимки. Ако пък не искате да ги одобрявате просто слагате в conf.php еднакви директории за четене и качване!

Ето, изписах цял роман, а още не съм дал скриптовете.

Ето ги и тях:



config.php
<?php

// Името на папката в която са снимките...
$path = 'images';

// Името на папката в която ще се качват снимките (те няма да са видими докато не ги одобрите)!
$uppath = 'upload';

// Максималната ширина на картинките...
$nwth = 120;

// Максимална големина на картинките за качване! В Байтове.
$max_size = 20000;

?>


index.php
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Dynamic Gallery</title>
<style type="text/css">
<!--
.style1 {
color: #000000;
font-size: 11px;
}
-->
</style>
<center><h1>Dynamic Gallery</h1></center>
</head>
<body bgcolor="#666666" Link="#FFFFFF" VLink="#FFFFFF" ALink="#FFFFFF">

<? include 'table.php'; ?>

<center>

<?php

if (!($page <= 0)){
echo "<a href=\"?page=".$minus."\"><< предишна | </a>";
}

$b = 1;

for ($a = 0; $a < $maxpage; $a++){

if ($a == $page)
echo "<a href=\"?page=".$a."\"><b> ".$b." </b></a>";

else
echo "<a href=\"?page=".$a."\"> ".$b." </a>";

$b = $b + 1;
}
if (($page + 1) < $maxpage){
echo "<a href=\"?page=".$plus."\"> | следваща >></a>";
}
?>
<br />
<br />
<a href="upload.php" class="style1">Качи картинка</a>
</center>
</body>
</html>


resize.php
<?php
Header("Content-type: image/jpeg");
include 'config.php';
$im = $path."/".$im;
$orig_image = imagecreatefromjpeg($im);
list($width, $height, $type, $attr) = getimagesize($im);
if ($width > $nwth) {
$ratio = $nwth / $width;
$newheight = $ratio * $height; }
else $newheight = $height;
$sm_image = imagecreatetruecolor($nwth,$newheight) or die ("Cannot Initialize new gd image stream");;
Imagecopyresampled($sm_image,$orig_image,0,0,0,0,$nwth,$newheight,imagesx($orig_image),imagesy($orig_image));
imageJPEG($sm_image);
imagedestroy($sm_image);
imageDestroy($orig_image);
?>


table.php
<center>
<table width="873" height="6" border="0" cellpadding="3">
<?php
include 'config.php';

if (!($page))
$page = 0;

$plus = $page + 1;
$minus = $page - 1;

$min = $page * 15;

$max = ($page * 15) + 15;

$i = 0;
$imgDir = opendir ($path);
while ( $file = readdir( $imgDir ) )
{
$file_type = strrchr( $file, "." );
$is_image = eregi( "jpg|gif|png|bmp",$file_type );

if ( $file != '.' && $file != '..' && $is_image )
{ $images[$i++] = $file; }
}

$maximage = count($images);
$maxpage = $maximage / 15;
///////////////////////////////////////////////////////////////////////
echo "<tr>\n <td width=\"428\" align=\"center\" bgcolor=\"#666666\"></td>\n";
echo "<td width=\"428\" align=\"center\" bgcolor=\"#666666\"></td>\n";
echo "<td width=\"428\" align=\"center\" bgcolor=\"#666666\"></td>\n </tr>";

for ( $i = $min; $i<$max && $i<$maximage; $i++){
/////////
@ $size = getimagesize($path."/".$images[$i]);
/////////
echo "<tr>\n <td align=\"center\"><a href=".$path."/".$images[$i]." target=\"_blank\"><img border=\"0\" src=resize.php?im=".$images[$i]."></a>\n";
echo "<center><b>".$size[0]." x ".$size[1];
echo "</b></center></td>\n";
/////////
$i = $i + 1;
/////
@ $size = getimagesize($path."/".$images[$i]);
/////////
echo "<td align=\"center\"><a href=".$path."/".$images[$i]." target=\"_blank\"><img border=\"0\" src=resize.php?im=".$images[$i]." alt=\"\"></a>\n";
echo "<center><b>".$size[0]." x ".$size[1];
echo "</b></center></td>\n";
/////
$i = $i + 1;
/////
@ $size = getimagesize($path."/".$images[$i]);
/////////
echo "<td align=\"center\"><a href=".$path."/".$images[$i]." target=\"_blank\"><img border=\"0\" src=resize.php?im=".$images[$i]." alt=\"\"></a>\n";
echo "<center><b>".$size[0]." x ".$size[1];
echo "</b></center></td></tr>\n";
/////
}

closedir ($imgDir);
?>
</table></center>


upload.php
<html>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Dynamic Gallery - Upload Image</title>
<body bgcolor="#CCCCCC">
<? include 'config.php'; ?>

<FORM ENCTYPE="multipart/form-data" ACTION="<? $PHP_SELF ?>" METHOD="POST">
<b>Качване на картинка! Не трябва да е по-голяма от <? echo $max_size; ?> байта!</b><br />
<?
if (!($path == $uppath))
echo "<b>След като тя е качена трябва администраторът на галерията да я одобри.</b><br /><br />";
?>
Картинката:
<INPUT TYPE="file" NAME="userfile">
<INPUT TYPE="submit" VALUE="Upload">
<br />
<br />
</FORM>

</body>
</html>

<?php

if (!isset($HTTP_POST_FILES['userfile'])) exit;

if (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) {

if ($HTTP_POST_FILES['userfile']['size']>$max_size) { echo "<b>Картинката е прекалено голяма!</b><br />"; exit; }

if (($HTTP_POST_FILES['userfile']['type']=="image/gif") || ($HTTP_POST_FILES['userfile']['type']=="image/pjpeg") || ($HTTP_POST_FILES['userfile']['type']=="image/jpeg") || ($HTTP_POST_FILES['userfile']['type']=="image/png")) {

if (file_exists($uppath."/".$HTTP_POST_FILES['userfile']['name'])) { echo "<b>Картинка с това име е вече качена!</b><br />"; exit; }

$res = copy($HTTP_POST_FILES['userfile']['tmp_name'], $uppath."/".

$HTTP_POST_FILES['userfile']['name']);

if (!$res) { echo "<b>Картинката не е качена!</b><br />"; exit; } else { echo "<b>Картинката е качена успешно!</b><br />"; }

echo "Име на файла: ".$HTTP_POST_FILES['userfile']['name']."<br />";

echo "Големина на файла: ".$HTTP_POST_FILES['userfile']['size']." Байта<br>";

echo "Тип на файла: ".$HTTP_POST_FILES['userfile']['type']."<br />";

} else { echo "<b>Файлът не е картинка!</b><br />"; exit; }

}

$my_file = $HTTP_POST_FILES['userfile']['name'];

?>


ТОВА Е! Ето и ДЕМООООО!
Демото може да ви го зареди малко бавно, защото е качено в freehostia, а картинките са големи.

Урока е авторски -- аз съм писал скриптовете, с изключение на скрипта за ъплоуд и за resize и е написан специално за Web-tourist!

Enjoy!




/ Трябва да сте регистриран за да напишете коментар /
От: joretojoey
1:05 17-03-2010
Здравейте,
Скрипта е чудесен,но имам питане относно resize.Нещо не ми се получава,създавам си галерията и т.н ,но когато отворя index.php всичките снимки който трябва да се показват ресайзнати не се виждат ами седи един червен x.Дайте идея да видим тоя ресайз как да стане
От: StormBreaker
13:37 17-03-2010
Значи този скрипт съм го правил много отдавна, когато още навлизах в програмирането за упражнение. Не Ви съветвам да го ползвате, защото може да има много бъгове и зарежда бавно.
1