mehrere Zufallsbilder / zeitlich aktualisieren
Sandra
- programmiertechnik
Hallo ihr Lieben,
Ich versuche Folgendes zu realisieren:
Aus einem Verzeichnis mit ca 200 Unterverzeichnissen (mit jeweils zwischen 20 und 500 Bildern) sollen ca 10 Zufallsbilder generiert werden. Anschliessend möchte ich die Bilder aus einer Seite einbinden und in zufälligen Zeitabständen (zw. 5-15sek) durch neue Bilder ersetzten. aber eben nicht 'alle-auf-einmal' sondern schööön durcheinander!
Ich hoffe daß jetzt irgendwer kapiert hat was ich meine ;-)
Wichtig wäre noch, daß dies alles möglichst 'passiv' passiert, und die eigentlichen wichtigen Teile der Seite nicht unnötig ausgebremst werden.
Gerne würde ich auf Java-Script verzichten, evtl. könnte die Geschichte auch in einem eigenen Frame ablaufen... ja, ja, ich weiß: Frames sind 'uncool'... ;-)
Würde mich über Hilfe freuen!
Hallo.
Aus einem Verzeichnis mit ca 200 Unterverzeichnissen (mit jeweils zwischen 20 und 500 Bildern) sollen ca 10 Zufallsbilder generiert werden. Anschliessend möchte ich die Bilder aus einer Seite einbinden und in zufälligen Zeitabständen (zw. 5-15sek) durch neue Bilder ersetzten. aber eben nicht 'alle-auf-einmal' sondern schööön durcheinander!
Also Verzeichnis rekursiv auslesen und die Namen der Dateien auf eine Liste setzen, alle Nicht-Bilder aussortieren, eine weitere Liste anlegen, solange ein Bild aus der ersten Liste zufällig auswählen, prüfen, ob es bereits in der zweiten Liste steht, und falls nicht, dort eintragen, bis die zweite Liste zehn Einträge enthält und die Liste in die Seite einbinden, regelmäßig einen zufällig gewählten Eintrag der Liste durch einen ebenfalls noch nicht in der zweiten Liste vorhandenen zufällig ausgewählten Eintrag der ersten Liste ersetzen und die akualisierte zweite Liste in die Seite einbinden und diese gleichzeitig im gleichen oder größeren Takt vom Browser anfordern lassen?
Wenn ich das richtig verstanden habe, wo liegt dann dein Problem?
MfG, at
Hallo at
Also Verzeichnis rekursiv auslesen und die Namen der Dateien auf eine Liste setzen, alle Nicht-Bilder aussortieren, eine weitere Liste anlegen, solange ein Bild aus der ersten Liste zufällig auswählen, prüfen, ob es bereits in der zweiten Liste steht, und falls nicht, dort eintragen, ...
Das kann dann im ungünstigsten Fall dazu führen, dass viele Schleifen
notwendig sind, bis jeweils ein noch nicht gewähltes Bild erwischt wird.
Besser finde ich, die erste Liste zu mischen, und danach einfach dieser dann
zufälligen Reihenfolge nach abzuarbeiten.
Auf Wiederlesen
Detlef
Hallo.
Das kann dann im ungünstigsten Fall dazu führen, dass viele Schleifen
notwendig sind, bis jeweils ein noch nicht gewähltes Bild erwischt wird.
Dieser ungünstigste Fall ist aber anhand der gegebenen Parameter kaum zu erwarten.
Besser finde ich, die erste Liste zu mischen, und danach einfach dieser dann
zufälligen Reihenfolge nach abzuarbeiten.
Prinzipiell hast du natürlich Recht, aber bei deinem Ansatz kann ein Bild prinzipiell erst nach einem vollständigen Durchlauf der gesamten Liste wieder erscheinen. Wenn das hier noch unter "zufällig" fällt, ist deine Lösung sicher vorzuziehen.
MfG, at
Hallo at
Prinzipiell hast du natürlich Recht, aber bei deinem Ansatz kann ein Bild prinzipiell erst nach einem vollständigen Durchlauf der gesamten Liste wieder erscheinen. Wenn das hier noch unter "zufällig" fällt, ist deine Lösung sicher vorzuziehen.
Je nachdem, wie gewünscht oder definiert.
Entweder eine zufällige Auswahl anzeigen - dein Ansatz, oder die Bilder in
zufälliger Reihenfolge anzeigen - der von mir genannte Ansatz.
Wenn lediglich zehn zufällige Bilder angezeigt werden sollen, würde ich deine
Variante wählen, wenn diese zehn Bilder aber immer wieder wechseln sollen,
dann meine.
Auf Wiederlesen
Detlef
Danke Euch beiden erstmal!
rekursiv Auslesen, Array erstellen, Array prüfen, Array ausgeben... war in etwa klar, Das 'Problem' liegt aber woanderst:
Eine Aktualisierung der Bilder erfolgt ja nur bei einem Reload, und ich möchte Erstens in der 'Hauptladezeit' das System nicht nach xtausend Bilder durchsuchen (unnötige Ladezeit). Zweitens sollen die Bilder ja nicht alle auf einmal geändert werden, sondern nach und nach:
zB:
10 Bilder auf Seite anzeigen >
nach 5 sec 3.Bild erneuern >
nach 10sec 5. und 1. Bild erneuern >
nach 3 sec 7.Bild erneuern >
usw.
Dabei ist die Dopplung von Bildern irrelevant.
warsch. komme ich da um JS nicht rum, oder?
Hallo Sandra
Eine Aktualisierung der Bilder erfolgt ja nur bei einem Reload, und ich möchte Erstens in der 'Hauptladezeit' das System nicht nach xtausend Bilder durchsuchen (unnötige Ladezeit).
Die Liste der verfügbaren Bilder musst du nicht ständig neu erstellen, die
kannst du auch einmalig erzeugen, jeweils wenn neue Bilder hochgeladen
worden sind, oder in gewissen Zeitabständen per Cronjob (z.B. einmal
täglich).
Beim Aufruf der Seite werden die einzubindenden Bilder dann über eine
Zufallsfunktion aus dieser Liste gewählt.
(Der Ansatz von at ist bei einer relativ kleinen Auswahl aus xtausenden
Bildern kein Problem.)
Damit hättest du eine Seite mit zufälligen Bildern, aber noch keine
regelmäßige Änderung der Bilder.
Zweitens sollen die Bilder ja nicht alle auf einmal geändert werden, sondern nach und nach:
Ohne komplettes Neuladen der Seite, brauchst du dazu Javascript.
Entweder lässt du den Server beim Ausliefern der Seite weitere Bild-URIs in
Form eines Javascript-Arrays übergeben, du kannst dann zeitgesteuert jeweils
ein oder mehrere Bilder durch welche aus diesem Array austauschen.
Ein Problem dabei ist, dass dieses Array ja auch nicht zu groß sein sollte,
du also kaum alle xtausend Bild-URIs übergeben kannst.
Eine andere Möglichkeit wäre, zum Bildwechsel nicht wirklich eine Grafik
aufzurufen, sondern ein serverseitiges Skript, welches dann ein zufällig
gewähltes Bild zurückliefert.
Auf Wiederlesen
Detlef
Hallo Detlef,
Danke für deine Hilfe!
Ich werde wohl mal versuchen mit der GDLib etc. serverseitig etwas zu machen (wie von at beschrieben) Ich denke dies macht wohl am meisten Sinn.
Die Clientleistung wäre damit minimiert, und die Serverleistung könnte man ja gering halten indem man die Gifanimationen nur zB. 1xtäglich (oder bei einem Update der Bilder) eine Auswahl erstellt.
Werde mich wohl mal da reinlesen...
Grüße Sandra
Hallo Sandra
Ich werde wohl mal versuchen mit der GDLib etc. serverseitig etwas zu machen (wie von at beschrieben) Ich denke dies macht wohl am meisten Sinn.
Dann hast du Bilder mit maximal 256 Farben, _alle_ Einzelbilder (der Gifs)
werden sofort beim Seitenaufruf geladen, je nach Client beginnt die Anzeige
dieser Gif-Filme eventuell auch erst, wenn diese vollständig geladen sind,
und Fotos wie auch Grafiken, die bereits als JPG komprimiert waren ergeben
meist unverhältnismäßig große Gif-Dateigrößen.
Die Clientleistung wäre damit minimiert,
der dürfte sich immer noch langweilen, wenn er alle paar Sekunden mal ein
neues Bild anfordern muss.
und die Serverleistung könnte man ja gering halten indem man die Gifanimationen nur zB. 1xtäglich (oder bei einem Update der Bilder) eine Auswahl erstellt.
Du willst also gar keine zufällige Auswahl und zufälligen Wechsel, sondern
lediglich _eine_ Auswahl bzw. eine "Auswahl des Tages"?
Auf Wiederlesen
Detlef
Hallo.
warsch. komme ich da um JS nicht rum, oder?
Wenn dich die Beschränkungen des Datenformates nicht zu sehr einschränken, kannst du auch serverseitig mittels Imagemagick und/oder der GDlib eine Reihe von animierten GIF-Bildern erzeugen. Interaktion mit den einzelnen Bildern hattest du ja nicht erwähnt.
MfG, at
Wenn dich die Beschränkungen des Datenformates nicht zu sehr einschränken,...
Eigentlich nicht > Jpg
Jpg
...kannst du auch serverseitig mittels Imagemagick und/oder der GDlib eine Reihe von animierten GIF-Bildern erzeugen.
Daran hab ich noch gar nicht gedacht! das wäre eigentlich die Lösung! (OK, icOKmuss mich da wohl noch ´n bischebischenu machen, hatte damit bisher recht wenig mit zu tun >> für gute AnfänAnfängertutorial bin ich dankbar ;-))
Interaktion mit den einzelnen Bildern hattest du ja nicht erwähnt.
Nee, nNeet wirklich, aber gemeint ;-)
Danke!