Image Gallery

Image Gallery ist ein frei verfügbares Javascript, mit dem Bilder animiert dargestellt werden können. Sie können dieses Javascript herunterladen und für Ihre Webseite verwenden.

Image Gallery wurde ursprünglich für einen unserer Kunden geschrieben und steht Ihnen nun in einer erweiterten Version zur Verfügung.

Vorteile

Image Gallery ist ein Javascript und bietet die folgenden Vorteile:

  • Animierte Anzeige von Bildern ohne Notwendigkeit, eine aufwendige Flash Applikation zu erstellen
  • Leichte und schnelle Anpassung an neue Bilder
  • Keine tiefen Programmierkenntnisse nötig
  • Erweiterbar durch eigene Programmierung

Sie können die Funktionen dieser Applikation testen, indem Sie unten die Einstellungen der Beispiel Applikation ändern.

Download

Image Gallery benötigt ggf. folgende Scripts, um alle Funktionen liefern zu können:

Download: Image Gallery Javascript

Einstellungen:
Allgemein:
Bilder Bewegen:
Bilder Faden:
Gallery Modus:
Gallery Größe anpassen:
Zeitdauer Bildwechsel:

Funktionalität

Image Gallery bietet eine flexibel konfigurierbare Funktionalität. Sie können die Funktionalität über Parameter steuern. Die einzelnen Paramter werden folgend detailliert beschrieben.

Generell bestimmen Sie, ob Sie Bilder aus einem definierten URL (Unique Resource Locator) laden oder alle Bilder als Dateiname in einem angegebenen (verborgenem) Feld speichern und von dort laden. Desweiteren bestimmen Sie, welche Animation auf die Bilder angewendet wird.

Parameter

Die Funktionalität der Applikation wird über Parameter des Javascripts gesteuert. Sie bestimmen diese Parameter im Javascript Code durch Anpassung der Standardwerte. Die Parameter entsprechen weitgehend den Einstellungen, die Sie oben in der Beispielapplikation vornehmen können.

Die folgenden Parameter können Im Javascript Code gesetzt werden:

var GalleryContainer = 'Gallery';
var GalleryMode = 2;
var isAdjustGallerySize = true;
var isByURL = true;
var iMax = 13;
var sURL = 'images/urlaub/small/';
var sFileName = 'image';
var sFileNameExtension = 'jpg';
var sFieldName = 'AllImages';
var ImageChangeDelay = 12000;
var FadeDuration = 12;
var MoveDirection = 2;
var Distance = 0;

Die Parameter steuern die Applikation und bewirken im Einzelnen:

Variable: Erklärung:
GalleryContainer Die ID des DIV Elements, in welchem die Bilder angezeigt werden sollen.
GalleryMode Eine Zahl, die bestimmt, ob Bilder bewegt angezeigt oder eingeblendet werden.
1: Bilder einblenden
2: Bilder bewegen
isAdjustGallerySize Boolean Wert, der bestimmt, ob die Größe der Gallery an das erste geladene Bild angepasst wird.
True: Größe anpassen
False: Größe konstant belassen
isByURL

Boolean Wert, der bestimmt, dass Bilder aus einem festgelegten URL geladen werden.
True: Bilder werden aus einem angegebenen URL geladen.
False: Bilder werden aus einem angegebenem Feld (sFieldName) geladen.

Hinweis: isByURL = True benötigt die folgenden gesetzten Felder:

iMax
sURL
sFileName
sFileNameExtension

iMax Die Anzahl der Bilder in dem angegebenen URL plus 1. Spezifizieren Sie 10, falls 9 Bilder geladen werden sollen.
sURL Der URL, aus dem Bilder geladen werden sollen. Dies kann ein absoluter oder relativer URL sein.
sFileName

Der gleichbleibende Teil des Dateinamens der Bilddateien. Dateinamen der Bilder werden wie folgt erwartet:
[sFileName][laufende Nummer].[sFileNameExtension]
Die laufende Nummer wird automatisch durch die Applikation bestimmt. Es wird vorausgesetzt, dass Bilder von 1 bis iMax-1 numeriert sind.

Bsp.:

sFileName = "Image"
sFileNameExtension = "jpg"
iMax = 11
Es werden alle Bilder von Bild 1 bis 10 geladen, die folgenden Namen haben:
Image001.jpg, Image002.jpg, ..., image010.jpg

sFileNameExtension Die Dateinamenserweiterung der Bilddateien, z.B. jpg, gif, png, bmp, etc.
sFieldName

Der Name des Feldes, der alle Dateinamen enthält. Falls isByURL = False gesetzt ist, werden Bilder aus diesem Feld geladen.

Hinweis: isByURL = False benötigt das folgende gesetzte Feld, falls mindestens ein Dateiname keine Pfadangabe enthält:

sURL

ImageChangeDelay Die Zeit in Millisekunden, nachdem ein Bild gewechselt wird. Spezifizieren Sie z.B. 12000, um Bilder nach 12 Sekunden zu wechseln.
FadeDuration Die Zeit in Sekunden, die für das Einblenden eines Bildes verwendet wird. Je kürzer diese Zeit bestimmt ist, desto schneller erfolgt der Wechsel eines Bildes.

Hinweis: FadeDuration sollte <= ImageChangeDelay sein.
MoveDirection Bestimmen Sie die Richtung, in der Bilder bewegt werden.

1: Rechts -> Links
2: Links -> Rechts
3: Oben -> Unten
4: Unten -> Oben
Distance Der Abstand zwischen den einzelnen Bildern in Pixel, falls diese bewegt werden.
Standardmäßig wird kein Abstand zwischen Bildern angezeigt. Bei Angabe eines Abstands wird ein weisser Bereich in Größe der angegebenen Pixels zwischen den Bildern angezeigt.

Details:

Sie bestimmen durch Angabe des Parameters isByURL, ob Bilder aus einem URL geladen werden sollen oder ob diese in einem verstecktem Feld gespeichert und von dort geladen werden sollen.

Sie verwenden isByURL = False, falls Ihre Server Applikation alle Bilder dynamisch ermittelt und deren Dateinamen in das in sFieldName spezifizierte (verborgene) Feld speichert. Die Liste der Dateinamen muss eine Komma separierte Liste sein. Dateinamen können mit oder ohne Pfad angegeben werden. Sollten Dateinamen ohne Pfad angegeben sein, muss sURL spezifiziert sein, um Bilder korrekt laden zu können. In diesem Fall werden alle Bilder in dem angegebenen Pfad gesucht.

Sie verwenden isByURL = True, falls Sie Bilder aus einem angegebenen URL laden möchten. Verwenden Sie hierfür die oben beschriebenen Parameter

iMax
sURL
sFileName
sFileNameExtension,

um diese Einstellung zu komplettieren.

Quick Start:

Für einen schnellen Start, verwenden Sie Image Gallery mit Standardeinstellungen.

Passen Sie nur folgende Parameter an:

  • iMax
  • sURL
  • sFileName
  • sFileNameExtension.

Voraussetzungen

Image Gallery benötigt die folgenden Javascripts, um das Einblenden (Fading) von Bildern zu ermöglichen:

Hinweis: Diese Scripts werden nicht benötigt, falls Sie nur Bilder bewegt animieren möchten.

HTML

Das folgende HTML Code Beispiel listet den minimalen HTML Code, der für das erfolgreiche Verwenden der Image Gallery nötig ist.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>My Title</title>
    <script type="text/javascript" src="js/prototype.js"></script>
    <script type="text/javascript" src="js/scriptaculous.js"></script>
    <script type="text/javascript" src="js/imageGallery.js"></script>
    <script type="text/javascript">
        Event.observe(window, 'load', GalleryShow, false);
    </script>
    <style type="text/css">
        .Gallery{width:200px;height:280px;margin-left:150px;border:solid 5px Gray;overflow:hidden;position:relative}
    </style>
</head>
<body>
    <input type="hidden" id="AllImages" name="AllImages" value="" />
    <div id="Gallery" class="Gallery">
    </div>
</body>
</html>

Hinweis: Das Listing listet Referenzen zu den Scripts Prototype und Scriptaculous, welche nur benötigt werden, falls Sie das Einblenden von Bildern verwenden möchten.

Hinweis: Sollten Sie die Scripts Prototype und Scriptaculous nicht verwenden, dann dürfen Sie Image Gallery nicht mit der Funktion Event.observe() starten. Verwenden Sie z.B. stattdessen das onload Ereignis des body Elements.

Bsp.: <body onload="GalleryShow();">

Hinweis: Das Listing listet eine Referenz zu der Javascript Datei imageGallery.js, welche den Code von Image Gallery als externe Datei enthält. Alternativ fügen Sie den Code als Teil der HTML Datei ein.

Javascript Source Code

  1 	    /*
  2             \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  3             Javascript (JS) driven Image Gallery
  4             Ver.: 1.0.0
  5             Date: September 2009
  6             Author: Uwe Gemsjäger
  7             (c) digital-ecom GmbH
  8 
  9             Function:   This JS displays images in an animated fashion. The type of animation can be specified by application settings.
 10                         The JS benefits are:
 11                             - Easy to adapt to a different set of images
 12                             - ... in a new location
 13                             - No need of Flash for display of images in an animated fashion ...
 14                             - No expensive reprogramming of Flash files in case the set of images changed ...
 15                             - Less CPU expensive than Flash ...
 16 
 17 
 18            \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 19         */
 20 
 21         /*
 22             ////////////////////////////////////////////////////////////////////////////////////////////////
 23             Specify a global variable which gets assigned to setTimeout functions - allowing to stop those functions on demand (-> clearTimeout()).
 24             ////////////////////////////////////////////////////////////////////////////////////////////////
 25         */
 26         var myGallery;
 27 
 28         /*
 29             ////////////////////////////////////////////////////////////////////////////////////////////////
 30             Core function, loaded by onload event of body.
 31             ////////////////////////////////////////////////////////////////////////////////////////////////
 32         */
 33         function GalleryShow()
 34         {
 35             // Specify application settings:
 36             var GalleryContainer = 'Gallery';   // The DIV which will contain all your images.
 37             var GalleryMode = 2;                // What type of animation to use: 1 = Fade images in and out; 2 = Move images from left to right, top to bottom, etc.
 38             var isAdjustGallerySize = true;     // Picks up 1st image, obtains its size and adjusts size of GalleryContainer to image size.
 39             var isByURL = true;                 // If true, iMax, sURL + sFileName have to specify the images to load. If false, field AllImages has to be filled with all file names of your images as comma separated list.
 40             var iMax = 13;                      // if isByURL is true, iMax has to be specified. iMax = Number of images in folder + 1 (i.e. specify 10 if the folder contains 9 images).
 41             var sURL = 'images/urlaub/small/';  // if isByURL is true, sURL has to be specified. If false it has to be specified in case field AllImages contains at least one file name, which does not contain path information.
 42             var sFileName = 'image';            // if isByURL is true, the application expects image files to be build by identical filenames, specified further by contigeous numbers within the filename (i.e. Image001.jpg, Image002.jpg, etc.)
 43             var sFileNameExtension = 'jpg';     // if isByURL is true, the type of Image has to be specified (i.e. jpg, gif, bmp, etc.).
 44             var sFieldName = 'AllImages';       // The FieldName, which contains all image file names.
 45             var ImageChangeDelay = 12000;       // Time in msec until the next image is loaded.
 46             var FadeDuration = 12;              // When GalleryMode = 1, specify how fast fading is performed.
 47             var MoveDirection = 2;              // When GalleryMode = 2, specify 1 in order to move from right to left, 2 = left to right, 3 = top to down, 4 = down to top.
 48             var Distance = 0;                   // When GalleryMode = 2, specify the empty space in Pixels between Image1 and Image2. Specify 0 if no Distance is desired.
 49 
 50             var objGalleryContainer = document.getElementById(GalleryContainer); // Do not change ...
 51 
 52             // Specify array of images, create HTML code by using this array and fill images (as HTML) into DIV; get counters for all our images (first, last, etc.):
 53             var aPics = ImageList_Get(isByURL, iMax, sURL, sFileName, sFileNameExtension, sFieldName);
 54             objGalleryContainer.innerHTML = GalleryHTML_Set(aPics, isAdjustGallerySize, GalleryContainer);
 55 
 56             var ImageList = objGalleryContainer.getElementsByTagName('img');
 57             for (var j=0; j < ImageList.length; j++){
 58                 if(j!=0){
 59                     ImageList[j].style.display = 'none';
 60                 }
 61             }
 62             var ImageLast = ImageList.length -1;
 63             var ImageFirst = 0;
 64             var ImageCurrent = 0;
 65 
 66             // Depending on the GalleryMode specified, animate images by using scheduled functions. Those functions will call themselves again, partly.
 67             if (GalleryMode == 1){
 68                 myGallery = setTimeout(fadeElements(ImageCurrent, ImageFirst, ImageLast, ImageList, ImageChangeDelay, FadeDuration), ImageChangeDelay);
 69             }
 70             else{
 71 
 72                 myGallery = setTimeout(moveElements(ImageCurrent, ImageFirst, ImageLast, ImageList, ImageChangeDelay, MoveDirection, Distance), ImageChangeDelay);
 73             }
 74         }
 75 
 76         /*
 77             ////////////////////////////////////////////////////////////////////////////////////////////////
 78             Supplemental functions ...
 79             ////////////////////////////////////////////////////////////////////////////////////////////////
 80         */
 81 
 82         /*
 83             Get images list as array ...
 84         */
 85         function ImageList_Get(isByURL, iMax, sURL, sFileName, sFileNameExtension, sFieldName)
 86         {
 87             if (sURL.substring(sURL.length-1, 1) != '/'){
 88                 sURL += '/';
 89             }
 90 
 91             if (isByURL){
 92                 return ImageList_ByPath(iMax, sURL, sFileName, sFileNameExtension);
 93             }
 94             else{
 95                 return ImageList_ByFieldList(sURL, sFieldName);
 96             }
 97         }
 98 
 99         function ImageList_ByPath(iMax, sURL, sFileName, sFileNameExtension)
100         {
101             var aPics = new Array();
102             if (isNaN(iMax) || iMax<1){
103                 aPics[0] = '';
104             }
105             else{
106                 for (var i=1;i<iMax;i++){
107                     if (i<10){
108                         aPics[i-1] = sURL + sFileName + '00' + i + '.' + sFileNameExtension;
109                     }
110                     else if(i<100){
111                         aPics[i-1] = sURL + sFileName + '0' + i + '.' + sFileNameExtension;
112                     }
113                     else{
114                         aPics[i-1] = sURL + sFileName + i + '.' + sFileNameExtension;
115                     }
116                 }
117             }
118             return aPics;
119         }
120 
121         function ImageList_ByFieldList(sURL, sFieldName)
122         {
123             var aPics = new Array();
124             var aTMP = new Array();
125             if (document.getElementById(sFieldName) == undefined || document.getElementById(sFieldName).value == ''){
126                 aPics[0] = '';
127             }
128             else{
129                 aTMP = document.getElementById(sFieldName).value.split(',');
130                 for (var i=0; i<aTMP.length; i++){
131                     if (aTMP[i].indexOf('/')>-1){
132                         aPics.push(aTMP[i]);
133                     }
134                     else{
135                         aPics.push(sURL + aTMP[i]);
136                     }
137                 }
138             }
139             return aPics;
140         }
141 
142         /*
143             Create HTML of images by using the array of images ...
144         */
145         function GalleryHTML_Set(aPics, isAdjustGallerySize, GalleryContainer)
146         {
147             var sHTML = '';
148             var sFileName = '';
149             for (var i=0;i<aPics.length;i++){
150                 sFileName = FileName(aPics[i]);
151                 if (isAdjustGallerySize && i==0){
152                     sHTML += '<img id=\"img_01_xAe2345_Bg67\" src=\"' + aPics[i] + '\" alt=\"' + sFileName + '\" title=\"' + sFileName + '\" onload=\"GallerySize_Adjust(\'img_01_xAe2345_Bg67\', \'' + GalleryContainer +'\')\" style=\"border:0px;position:absolute;left:0px;top:0px\" />';
153                 }
154                 else{
155                     sHTML += '<img src=\"' + aPics[i] + '\" alt=\"' + sFileName + '\" title=\"' + sFileName + '\" style=\"border:0px;position:absolute;left:0px;top:0px\" />';
156                 }
157             }
158             return sHTML;
159         }
160 
161         function FileName(sURL)
162         {
163             var p = sURL.lastIndexOf('/');
164             if (p>-1){
165                 return sURL.substring(p+1, sURL.length);
166             }
167             else{
168                 return sURL;
169             }
170         }
171 
172         /*
173             If to adjust size of Gallery, adjust its size by size of first image ...
174         */
175         function GallerySize_Adjust(Img1_ID, GalleryContainer_ID)
176         {
177             var ImageWidth;
178             var ImageHeight;
179             var Img1 = document.getElementById(Img1_ID);
180             var GalleryContainer = document.getElementById(GalleryContainer_ID);
181 
182             if (Img1.clientWidth){
183                 ImageWidth = Img1.clientWidth;
184                 ImageHeight = Img1.clientHeight;
185             }
186             else{
187                 ImageWidth = Img1.innerWidth;
188                 ImageHeight = Img1.innerHeight;
189             }
190             GalleryContainer.style.width = parseFloat(ImageWidth) + 'px';
191             GalleryContainer.style.height = parseFloat(ImageHeight) + 'px';
192         }
193 
194         /*
195             The Animation Functions ...
196         */
197         function fadeElements(ImageCurrent, ImageFirst, ImageLast, ImageList, ImageChangeDelay, FadeDuration)
198         {
199             return (function()
200                 {
201                     ImageList[ImageCurrent].style.position = "absolute";
202                     ImageList[ImageCurrent].style.left = document.getElementById('Gallery').style.left;
203 
204                     Effect.Fade(ImageList[ImageCurrent],{ duration:FadeDuration, from:1.0, to:0.0 });
205                     if (ImageCurrent == ImageLast){
206                         ImageCurrent = ImageFirst;
207                     }
208                     else{
209                         ImageCurrent++;
210                     }
211 
212                     Effect.Appear(ImageList[ImageCurrent], { duration:FadeDuration, from:0.0, to:1.0 });
213                     myGallery = setTimeout(fadeElements(ImageCurrent, ImageFirst, ImageLast, ImageList, ImageChangeDelay, FadeDuration), ImageChangeDelay);
214                 }
215             )
216         }
217 
218 
219         function moveElements(ImageCurrent, ImageFirst, ImageLast, ImageList, ImageChangeDelay, MoveDirection, Distance)
220         {
221             return (function()
222                 {
223                     var ImageWidth;
224                     var ImageHeight;
225                     var Img1 = ImageList[ImageCurrent];
226                     if (ImageCurrent >= ImageLast){
227                         var Img2 = ImageList[ImageFirst];
228                     }
229                     else{
230                         var Img2 = ImageList[ImageCurrent +1];
231                     }
232 
233                     Img1.style.display = 'block';
234                     Img2.style.display = 'block';
235 
236                     if (Img1.clientWidth){
237                         ImageWidth = Img1.clientWidth;
238                         ImageHeight = Img1.clientHeight;
239                     }
240                     else{
241                         ImageWidth = Img1.innerWidth;
242                         ImageHeight = Img1.innerHeight;
243                     }
244 
245                     switch (MoveDirection){
246                         case 1:
247                             Img2.style.left = parseFloat(ImageWidth + Distance) + 'px';
248                             break;
249                         case 2:
250                             Img2.style.left = parseFloat(ImageWidth*(-1) - Distance) + 'px';
251                             break;
252                         case 3:
253                             Img2.style.top = parseFloat(ImageHeight*(-1) - Distance) + 'px';
254                             break;
255                         case 4:
256                             Img2.style.top = parseFloat(ImageHeight + Distance) + 'px';
257                             break;
258                     }
259 
260                     setTimeout(moveImage(Img1, Img2, ImageWidth, ImageHeight, 1, MoveDirection, Distance),0);
261 
262                     if (ImageCurrent == ImageLast){
263                         ImageCurrent = ImageFirst;
264                     }
265                     else{
266                         ImageCurrent++;
267                     }
268                     myGallery = setTimeout(moveElements(ImageCurrent, ImageFirst, ImageLast, ImageList, ImageChangeDelay, MoveDirection, Distance), ImageChangeDelay);
269                 }
270             )
271         }
272 
273         function moveImage(obj1, obj2, ImageWidth, ImageHeight, Pixel, MoveDirection, Distance)
274         {
275             return (function()
276                 {
277                     Pixel += 1;
278                     switch(MoveDirection){
279                         case 1:
280                             obj1.style.left = parseFloat(parseFloat(obj1.style.left.replace(/px/,'')) - 1) + 'px';
281                             obj2.style.left = parseFloat(parseFloat(obj2.style.left.replace(/px/,'')) - 1) + 'px';
282                             break;
283                         case 2:
284                             obj1.style.left = parseFloat(parseFloat(obj1.style.left.replace(/px/,'')) + 1) + 'px';
285                             obj2.style.left = parseFloat(parseFloat(obj2.style.left.replace(/px/,'')) + 1) + 'px';
286                             break;
287                         case 3:
288                             obj1.style.top = parseFloat(parseFloat(obj1.style.top.replace(/px/,'')) + 1) + 'px';
289                             obj2.style.top = parseFloat(parseFloat(obj2.style.top.replace(/px/,'')) + 1) + 'px';
290                             break;
291                         case 4:
292                             obj1.style.top = parseFloat(parseFloat(obj1.style.top.replace(/px/,'')) - 1) + 'px';
293                             obj2.style.top = parseFloat(parseFloat(obj2.style.top.replace(/px/,'')) - 1) + 'px';
294                             break;
295                     }
296                     if (MoveDirection<3){
297                         if (Pixel < parseFloat(ImageWidth + 1 + Distance)){
298                             setTimeout(moveImage(obj1, obj2, ImageWidth, ImageHeight, Pixel, MoveDirection, Distance), 0);
299                         }
300                     }
301                     else{
302                         if (Pixel < parseFloat(ImageHeight + 1 + Distance)){
303                             setTimeout(moveImage(obj1, obj2, ImageWidth, ImageHeight, Pixel, MoveDirection, Distance), 0);
304                         }
305                     }
306                 }
307             )
308         }
309 
310         Event.observe(window, 'load', GalleryShow, false);
Größe anpassen: Ziehen oder Doppelklick
 
 
 
 
Telefonischer Kontakt
+49 (040) 80 81 68 80
Email
Kontaktformular