Sandra: mehrere Zufallsbilder / zeitlich aktualisieren

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!

  1. 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

    1. 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

      --
      - Wissen ist gut
      - Können ist besser
      - aber das Beste und Interessanteste ist der Weg dahin!
      1. 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

        1. 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

          --
          - Wissen ist gut
          - Können ist besser
          - aber das Beste und Interessanteste ist der Weg dahin!
          1. 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?

            1. 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

              --
              - Wissen ist gut
              - Können ist besser
              - aber das Beste und Interessanteste ist der Weg dahin!
              1. 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

                1. 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

                  --
                  - Wissen ist gut
                  - Können ist besser
                  - aber das Beste und Interessanteste ist der Weg dahin!
            2. 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

              1. 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!