SlideShowMaker
Met dit programma wordt het zeer makkelijk gemaakt om een serie foto's op het web te publiceren. Nadat een hele map met geschikt gemaakte (juiste formaat en compressie) foto's is geüpload, kunnen deze eenvoudig in de gewenste volgorde gezet en van een bijschrift voorzien worden. Daarna zijn de foto's te bezichtigen via een link naar de map waarin de map met foto's zich bevinden. De bijbehorende viewer zorgt er voor dat zowel liggende (landscape) als staande (portrait) foto's goed weergegeven worden. De bijschriften worden, al naar gelang het fotoformaat, naast of onder de foto getoond. De toeschouwer bepaalt zelf het tempo d.m.v. een muisklik. Met een kleine aanpassing kan de viewer ook automatisch lopen maar meestal is dat niet zo prettig. Als het systeem snel genoeg is, vloeien de foto's in elkaar over. Bij trage systemen (Internet Explorer) verloopt het overvloeien van grote afbeeldingen niet soepel en daarom is in dat geval voor een gewone 'harde' overgang gekozen. Het achteraf toevoegen of verwijderen van foto's, is geen enkel probleem. Ook aanpassingen in de tekst of in de volgorde zijn met slechts enkele handelingen te bewerkstelligen.
Het idee voor dit programma ontstond toen ik weer eens een serie foto's op het web moest zetten. Daarvoor had ik al eerder een JavaScriptje gemaakt dat er voor zorgde dat de bezoekers door een muisklik de volgende foto te zien kregen. Dat werkte perfect maar het was heel bewerkelijk: Van iedere foto moest de naam in een JavaScript-array geplaatst worden. Ik wilde er ook nog graag een bijschrift bij dus dat moest er ook nog in. Het vervelende was dat als je er later iets aan wilde veranderen (foto's toevoegen of verwijderen), dit een enorme klus was. Zoektochten op het web mochten niet baten. Bij alle beschikbare slideshows en lightboxes werd altijd verlangt dat je de naam van iedere foto apart, netjes in het script op zou nemen. Was er dan nergens een programma te krijgen waarmee je gewoon een hele map foto's tegelijk kon publiceren?
Mijn eerste programma dat dit kon, maakte gebruik van de hele interessante mogelijkheid om vanuit HTML
(<script src="getImages.php"></script>) een PHP-script aan te roepen dat op zijn beurt een JavaScript-file retourneerde. Dat doet PHP door middel van dit statement:
header("content-type: application/x-javascript"); Hiermee manipuleer je de HTTP-header zodat de output het formaat van een JavaScript-file krijgt. (Dit vind ik nu leuke dingen). PHP heeft in tegenstelling tot JavaScript wèl de mogelijkheden om bestandsnamen op de server te lezen. Nadeel van dit programma was dat je slechts heel moeilijk iets aan de volgorde kon veranderen. Voor sommige toepassingen is dat geen bezwaar maar het was niet wat ik wilde.
Uiteindelijk heb ik gekozen voor een oplossing waarbij de volgorde en bijschriften worden opgeslagen in een XML-bestand. Dit is gemakkelijk te wijzigen en aan te vullen. De viewer leest het XML bestand via 'SJAX' (de synchrone variant van AJAX). Op deze wijze is voor de weergave van de fotoreeks zelfs geen actieve server nodig.
Waarom SJAX en geen AJAX? Bij AJAX worden er gegeven geladen terwijl het hoofdprogramma gewoon doorloopt. Het hoofdprogramma verloopt veel sneller dan het laden. Het gevolg is dat als er iets gedaan moet worden met de data, deze nog lang niet binnen zijn wat resulteert in allerlei fouten. Met SJAX wacht het programma geduldig tot de gegevens zijn aangekomen en pas dan wordt het programma vervolgd.
Copyright © 2010-2012