From 3520f504f1f43ca371ce05535f856b80572904e1 Mon Sep 17 00:00:00 2001 From: SammysHP Date: Wed, 15 Aug 2012 16:20:41 +0200 Subject: [PATCH] Initial commit --- .gitignore | 1 + README.md | 19 +++++ arrow-left-big.png | Bin 0 -> 1456 bytes arrow-left.png | Bin 0 -> 399 bytes arrow-right-big.png | Bin 0 -> 1413 bytes arrow-right-tiny.png | Bin 0 -> 274 bytes arrow-right.png | Bin 0 -> 390 bytes config.php.skel | 78 ++++++++++++++++++++ home.png | Bin 0 -> 319 bytes index.php | 169 +++++++++++++++++++++++++++++++++++++++++++ info.png | Bin 0 -> 361 bytes random.png | Bin 0 -> 516 bytes raw/arrow.psd | Bin 0 -> 39396 bytes raw/home.psd | Bin 0 -> 28730 bytes raw/info.psd | Bin 0 -> 27780 bytes raw/random.psd | Bin 0 -> 31090 bytes style.css | 154 +++++++++++++++++++++++++++++++++++++++ 17 files changed, 421 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 arrow-left-big.png create mode 100644 arrow-left.png create mode 100644 arrow-right-big.png create mode 100644 arrow-right-tiny.png create mode 100644 arrow-right.png create mode 100644 config.php.skel create mode 100644 home.png create mode 100644 index.php create mode 100644 info.png create mode 100644 random.png create mode 100644 raw/arrow.psd create mode 100644 raw/home.psd create mode 100644 raw/info.psd create mode 100644 raw/random.psd create mode 100644 style.css diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4e9b47a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +config.php \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..b3b8cc0 --- /dev/null +++ b/README.md @@ -0,0 +1,19 @@ +Simple Image Browser +============= + +Written with the goal of a simple php image gallery that does not require a database or JavaScript. + +![Screenshot](http://i.imgur.com/49rK7.png) + +This script scans the configured directories for images (jpeg, jpg, png, gif) and shows them one by one with a thumbnail navigation. You can create several albums. Please note that no thumbnails are created, but the original images are resized by the browser. This script is intended to be used with images of 800x800px max. Larger images will be resized by the browser (with proportions preserved). + +Requirements +------------ + +* php + +Installation & Configuration +---------------------------- + +* Copy `config.php.skel` to `config.php`. Options are explained in the configuration file. +* Upload everything contained in this repository (except raw, which are the original Photoshop files) to your webspace. \ No newline at end of file diff --git a/arrow-left-big.png b/arrow-left-big.png new file mode 100644 index 0000000000000000000000000000000000000000..3b05b8c6ad71e594451ef324b67d07e5b9a1590b GIT binary patch literal 1456 zcmWkueKb@F6n|rUw8JE=K~Y<_(+PvMNgG89Wve00JkQLQ!Az_-8YwY8*5FVyX&uap zq;#eaGtYTLZ%k#|;bg-UN1gXFgtDPC6{qa1$j3f^+W&I{~b^=C#ryWH3efa`kyDC@3QONQQpIoGIqf?WgAO zPEcxsd2T0_j$RrwRej=NfijwPeibx8LumqET+y-Tuloj4QLJ3&7pzOp*jOsU#xkp= z>6QK@zwx9}UzB}nS1%|{_Y~B`_-4Lj$oTV{YeRSC!?u1u zu8ei>&Mimet}dt8D7*G`jyW&X(qkwYP3^1OrYWV#dq9cCA7GB!BzWi=U0WIqMgYw@ z>9ej`KIzTD@-zz(V zQRtcKDpd@a$A)P*<|`b>skuE55E4W24xeA7!kQt{Qe)S#evxT|DyO|id+3}$NWlfs5NR>2TI5J%23fb9n|1Q@)3u<-OkL;!~z5O@cLV8;!;9FoQEzMwx0zL z4fHrOtB{G{E|RddIt8Qdd&D2_qlz7;BvNFdJ*yZ2ta%iN7F;aC=>BAHT0QFaYGw^@ zu27+E<^Bzh@b8LDE`ql9sGO}Akf-erxB>I}iRYRuiq{C=&98mIx7$JcrC`UFX58gY zW?>Nm=sUn8e!+R^L!<6BfYTQ)E!h;&--S*;uVDe8qF zJZrS9xc~$7-CW6j6;-~h!Z_MVVKhu3F1yeY5r6(%9~ZJl-PLmA3FT^NB!-0@*G^Wk zZ2@aoz1fV26^09tuhMZbB3Zd-417Daubn*$=mV@8V)SDttkK?ESTRLE$}Nq79ng3P zZcXjG!K%lA_isN~Cwl5SxK$ABMEb=xy$hg1OEHHr^21;(%zo|Az!SovSqTVD?NsKm~FmZ7N39+C1_F1L2{pkfwe7 Gg8u;@Kfv$+ literal 0 HcmV?d00001 diff --git a/arrow-left.png b/arrow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..2b4c0921bd6580000b10719f42c4b76d2c71575f GIT binary patch literal 399 zcmV;A0dW3_P)cLt~cjy-Sga@KmRv3yWf6yn{9-X$u8iLgsYiDKV0C71gkkgBby1R;4!pLwWWehwrA+Ub`lDB zm|^?o0$1cR>ue*;L_Wc`p&4IbY_VXI?FG8W?iU8!&&w7A7Pb?E?T+$1`Uu;mW_(Gp zwFQ?AwpXgHE!bo$_V&dI4m^g~fVXm4)rjRUae`m+CQ{Ra4miP{yoqjkTHAt?4C@{z z__xnX(=0~XdR&3Kz)jeR?9p!YnivEVH0E+<%IZLpqUtSR6`!qs#z*3_@eEbD+1 t{B*T;`IA`73m{n+9l!!wqn`W~U;rxhK@~^$-$4KX002ovPDHLkV1lm7uFn7f literal 0 HcmV?d00001 diff --git a/arrow-right-big.png b/arrow-right-big.png new file mode 100644 index 0000000000000000000000000000000000000000..c48860a58baa1850cd98dfe67f54ab75ea15fac0 GIT binary patch literal 1413 zcmX9;4NOy46n>?)%vL5${uv5&$U=)|D54Z}kWyugf?yxdc1p`yjPx%spt1$5{A^4_ ztV%bi1sztV^pRJfMPaf+_!}s&vc3pXapE6>k^qhc!`uaLa_>p*`M!J4cTUdvF_Ck? ziQ-LxAjm29AS(%2&FcPu49*Bb=3`*IvSX0!WJP+mQkW%%qC|=`v0toAcwC$$7K-vR z{}4w&5GgR06?ORJ_^j>_ODFW~OQ5@e^(U8gc3ZEf(LNibX{6EEEY_|-UnYyy%}C3x zWTzbM@%#+jr2yoVv$}bSdtxl!G?!o7@$T*0g%|UumWPIi7Ygb}Q<71bS}f9eTWG2n zs0@PT$7Yw8!{_ejkjdnl#hHe|ze8VTE(ByfFVVKjgZxk`K9s8JxqC|+(m%0dIBU5r z_~E1VVdZ{xPWbm)d%y0Uy!Ugq52N-Y+`*8DkC#o1Jx+I(wsbZ%;jXyVkt!j;=fCnk zBC*C3|9w%I^EJBCuS1czEeu6)*;`&R5(l`U1`_fGKHm;UdQPuGiu!f3H3+)5?kH8V zzUXOlh6r^@w31h!OO*JsUrUucH*m%UM|95hM$K+yUuwA_bX^j-;5E1#vOC+xOy_9I zTud@ulylky(VsMmg{Z&9dahMt%SU+@>(CkPRKHGlgHI=6n7e>9*rYa*32~FWh0D$a z`Xv(wu=N?}B};hNxamR*-rQY~N|(GLYC24eT$Coz3(?Vjon8KrsL2gtx5F+N27mhA z?|zn3stTwH2s^H3ewSo~2LxP7u5yY%m5_`$(_(GKX@M*Y#bqNt*RQ+t66B5kD}z%S zW9i~uHM}8Xi>TNrx#s|T<7ZZ!um5xt03KX6N(h<@ren9KiHv+nurSy{QIm+0J8-kR zU`3m}RT58h$0_QLnS3hNjhdt*Oe(Tm)yGr0(E{0c(CTC16%*5Q-AfLuxCB*+38;YD`+E6+pCTuJ@;9|)*}H+*}X5Vv2vR+4HmW96kr^_6 z<|G9R87@|%1&~HwZ9nU^sHxme6GS@kWvMb^kvai zbUOk3RJHP#w9*@a%}pmGD1sO>S9==8lOl5K9pFf_1H+B)do82kum!L~Ug+X%@C{XH znyA4R-F3*3$_E{{!K3lN=~H)+h)*_Qv!=Ax$>Qp6SA;GI7o%g%7$;X7jqe;K@HxBo;U1N%c$qiXc%P}D&WL%~+QagEA-FUziGCXAtrU>tBs+1bFjwO8&z+|4`- zJTA!NM^;SaJxgCN0`uaQq6FQ1zU||VXEigmOc&-#-|n(Uzc^_eUy>B|QBJ&x_cX}) g{nR=yT{xg3K;Z#*Zut&sZMKc38uEq<-Uy?-%BfHG47hUHe$W;A-LC1o$OqJW~7(aRinM`Lg zl%8_8OLyUeOFE24G6TN(=4^X(Ifl`9p27teuTLtc!eS(yIXbu}6kUyvnZ?M&!w^-k V{JGqBSr^d#44$rjF6*2UngEO{Xf^-< literal 0 HcmV?d00001 diff --git a/arrow-right.png b/arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..be8da0c48e602305c865971283981f76306cb5be GIT binary patch literal 390 zcmV;10eSw3P)ZA|ggaMD)1tR76Ci5fQoF!=C2c?cQ_mIs9M#TYmf9O?N8^Aw1Q@aqQVl z7>3GYzQ*qZnX`<@JT9uaUl`YfS|g zSyws19~)~MaM6y&2Ck&bnw@)k8`!|GoNc6s<$rU5!FGo94;@<@@W95F3eL0LasG3G zZ3pQ$y0#Rs%JwO<<=mb6E^JM~U^`dXMx1XTVB1Cd$kf&Z9JsVK0q5B!Twt(WAbmo$ kg(+)(!t`8kUw;7x0Cy5WHa$8vt^fc407*qoM6N<$f^X%l-T(jq literal 0 HcmV?d00001 diff --git a/config.php.skel b/config.php.skel new file mode 100644 index 0000000..1e6c2c5 --- /dev/null +++ b/config.php.skel @@ -0,0 +1,78 @@ + "relative path" + */ +$config['albums'] = array( + 'Home' => 'images' +); + + +/** + * The base title of this site. Image titles are appended with + * " :: image title". + * + * Values: string + */ +$config['sitetitle'] = 'Simple Image Browser'; + + +/** + * Number of thumbnails next to the image. A value of n*3 looks best. + * Do not use high numbers because all images are loaded by the client (no + * thumbnail generation). + * + * Values: integer, 1-n + */ +$config['paginginterval'] = 9; + + +/** + * Sort images descending instead of ascending. Sorting is always alphabetically + * at the moment. Choose a good filename if you want any special sorting. + * + * Values: true, false + */ +$config['sortDescending'] = true; + + +/** + * URL for the home button next to the image. If empty, the button is hidden. + * + * Values: string + */ +$config['homeurl'] = ''; + + +/** + * Text for the info/about page. + * + * Values: string, here with Nowdoc syntax + */ +$config['info'] = <<<'EOD' +

+ Displayed with Simple Image Browser by Sven Karsten Greiner. +

+EOD; diff --git a/home.png b/home.png new file mode 100644 index 0000000000000000000000000000000000000000..50cdd9f0563f0eeb68469c522ec8c74f321e89c5 GIT binary patch literal 319 zcmV-F0l@x=P)eZ_WsSyR@ za3KB*#Os0h1+rvlXeg?IL>RUgh;^a-d?0o}HxwB#5islk)UazndQkr-$B`U4MjIl0?DuoNQS`xhM~YnmB3}71T+F*hPj~` zMwFpUSPTOJ10a3{#Q$;Nw@@_<=!P<3@g}JN#idNpM5~SzW-!1=0K)*X_rpO3P6Xm~ zsKh%`od?V*urN&rvM0iF$}CFqFVxUkgmMa5U<4Y7ulV{uC|t-$?J58uzyQ|SOZd0q R%0K`B002ovPDHLkV1gWTd13$n literal 0 HcmV?d00001 diff --git a/index.php b/index.php new file mode 100644 index 0000000..21b6942 --- /dev/null +++ b/index.php @@ -0,0 +1,169 @@ +. + */ + +error_reporting(0); + +include('config.php'); + +function generateImageUrl($album, $image) { + return '?album=' . rawurlencode($album) . '&image=' . rawurlencode($image); +} + +if (isset($_POST['album'])) { + header('Location: ?album=' . rawurlencode($_POST['album'])); + die(); +} + +$directories = $config['albums']; +$random = false; + +$album = $_GET['album']; +$image = $_GET['image']; + +// Random image if no album and no image given or $_GET['random'] +if (isset($_GET['random']) || ($album == null && $image == null)) { + $random = true; +} + +// Validate given album or use first or random one +if ($album == null || !array_key_exists($album, $directories)) { + if ($random) { + $album = array_rand($directories); + } else { + reset($directories); + $album = key($directories); + } +} + +// Scan directory for image files +$files = scandir($directories[$album], $config['sortDescending'] ? 1 : 0); +$images = array(); +foreach ($files as $file) { + $f = strtolower($file); + if (!is_dir($directories[$album] . '/' . $file) + || strstr($f, ".jpg") + || strstr($f, ".jpeg") + || strstr($f, ".png") + || strstr($f, ".gif")) { + $images[] = $file; + } +} + +// Validate given image or use first or random one in album +if ($image == null || !in_array($image, $images)) { + if ($random) { + $image = $images[array_rand($images)]; + } else { + $image = $images[0]; + } +} + +// Calculate paging boundaries +$currentIndex = array_search($image, $images); +$pagingStart = floor($currentIndex / $config['paginginterval']) * $config['paginginterval']; +$neighbors = array_slice($images, $pagingStart, $config['paginginterval']); + +?> + + + <?php echo $config['sitetitle'] . ((!isset($_GET['info'])) ? (' :: ' . htmlspecialchars($image)) : ' :: Info'); ?> + + + + +' . $config['info'] . ''; +} else { +?> + + + + + +
+ + +
+ 0) { + $href = generateImageUrl($album, $images[$currentIndex - 1]); + echo ""; + } + if ($currentIndex + 1 < count($images)) { + $href = generateImageUrl($album, $images[$currentIndex + 1]); + echo ""; + } + ?> + +
+
+ + \ No newline at end of file diff --git a/info.png b/info.png new file mode 100644 index 0000000000000000000000000000000000000000..e823a5552a00e424bc5808423ed449f89f49e7a8 GIT binary patch literal 361 zcmV-v0ha!WP)dNl(nAT%@- zh0nx58i)nr!$7l^lzkJ3 zCsOL=J3y=i#EL+C7MCJoT*w2&r9iw3h?hbQ#0gl4hzN8;?16Ya5dS6Bg@Hia3&d_n zVFv?$N%gWi5a$E24-iWOF+Y;rZgRZ*8fw@VAWlP*TTG6D@1V30)ax+t5t@7$$c^O$ zAm&8kuL0uklo&{ocL^D228|pT0Oj3-P#3$BV_*Un*KtAD7cuy9 ziZmKO8Hlr>5kpoOPJt#LP(jcE#M*=mBjmz*Yy~JG01#jR^#w0xnOc{F00000NkvXX Hu0mjfA{B#x literal 0 HcmV?d00001 diff --git a/random.png b/random.png new file mode 100644 index 0000000000000000000000000000000000000000..80292d54a1349386fe0b472c573c86a7c1d021a1 GIT binary patch literal 516 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 literal 0 HcmV?d00001 diff --git a/raw/random.psd b/raw/random.psd new file mode 100644 index 0000000000000000000000000000000000000000..f71f5c1a5f85dfac5ad974380f75bf4c0ecbbe6e GIT binary patch literal 31090 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 Pu^BpfJe+VTZRr014AhOh literal 0 HcmV?d00001 diff --git a/style.css b/style.css new file mode 100644 index 0000000..87c9597 --- /dev/null +++ b/style.css @@ -0,0 +1,154 @@ +* { + margin: 0; + padding: 0; + border: none; +} + +html, body { + background: #222; + color: #ddd; + font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, sans-serif; + line-height: 1em; +} + +p { + margin-bottom: 1em; + text-align: justify; + line-height: 1.2em; +} + +p a, p a:visited { + color: #C0DB5A; + text-decoration: none; +} + +p a:hover { + color: #C0DB5A; + text-decoration: underline; +} + +#sitecontainer { + width: 1050px; + margin: auto; + margin-top: 1em; +} + +#sidebar { + width: 224px; +} +#thumbnav a { + float: left; + display: block; +} +#thumbnav img { + border: 2px solid #fff; + margin: 5px; + width: 60px; + height: 60px; +} +#thumbnav .current { + border: 5px solid #fff; + margin: 2px; +} +#thumbnav img:hover { + border: 5px solid #fff; + margin: 2px; +} +#thumbnav-paging { + clear: both; + padding-top: 1em; +} +#thumbnav-paging div { + margin: auto; + margin-top: 0.5em; + width: 50%; + text-align: center; +} +#thumbnav-paging .back { + float: left; + margin-left: 1em; +} +#thumbnav-paging .next { + float: right; + margin-right: 1em; +} +#albumnav { + width: 200px; + margin: auto; + padding-bottom: 2em; +} +#albumnav input { + border: none; + background: url('arrow-right-tiny.png') no-repeat center #3a3a3a; + color: #ddd; + font-weight: bold; + float: right; + width: 1.2em; + height: 1.5em; + cursor: pointer; +} +#albumnav .select { + width: 175px; + overflow: hidden; +} +#albumnav .select select { + background: #3a3a3a; + border: none; + width: 200px; + height: 1.5em; + color: #ddd; + cursor: pointer; +} + +#info { + clear: both; + border-top: 1px solid #aaa; + margin-top: 3em; + padding-top: 0.5em; + text-align: center; +} +#info a { + margin: 0 1em; +} + +#infobox { + width: 500px; + margin: auto; + margin-top: 6em; + margin-bottom: 6em; + padding: 4em 2em; + border-left: 1px solid #aaa; + border-right: 1px solid #aaa; + font-size: 0.8em; + position: relative; +} + +#infobox .home { + position: absolute; + top: 1em; + right: 2em; +} + +#imagecontainer { + height: 805px; + width: 805px; + text-align: center; +} +#imagecontainer img { + max-width: 800px; + max-height: 800px; + width: expression((this.width > 800 && (this.height * 800 / this.width) < 800) ? 800: true); + height: expression((this.height > 800 && (this.width * 800 / this.height) < 800) ? 800: true); +} +#imagecontainer .navi { + position: absolute; + height: 100%; + top: 0; + width: 25%; + background: transparent; + display: block; +} +#imagecontainer .back {left: 0; background: url('arrow-left-big.png') no-repeat -10000px -10000px transparent;} +#imagecontainer .back:hover {background: url('arrow-left-big.png') no-repeat right center transparent;} +#imagecontainer .next {right: 0; background: url('arrow-right-big.png') no-repeat 10000px 10000px transparent;} +#imagecontainer .next:hover {background: url('arrow-right-big.png') no-repeat left center transparent;}