Karl-Heinz: Zufallsgenerator mit Bildern

hallo,

seit 1 woche sitze sich jetzt schon an einem zufallsgenerator der einfach aus einem unterordner 10 bilder in dem beliebig viele bilder (jpg) liegen (alle gleiche größe u. auflösung) zufällig auswählt und diese dann umbenennt in p0.jpg, p1.jpg, p2.jpg, p3.jpg, etc. und in einen anderen ordner legt.

es gibt eine ordner "img_home" in diesem ist ein ordner "img_temp". in dem ordner liegen an die hundert bilder mit verschiedenen namen (dies könnte man ändern, das diese auch eine feste aber fortlaufende bezeichnung haben) alle jpg und alle die gleiche auflösung und größe. nun soll er aus diesem einfach zufällig 10 auswählen, diese in den übergeordneten ordner "img_home" kopieren und wie oben beschrieben umbenennen. der ordner "img_temp" muss nicht im ordern "img_home" liegen dies habe ich nur aus ordnungsgründen so angelegt.

wiegesagt ich sitze jetzt ein woche dran und habe es nicht hinbekommen mit php und hab nun alles verworfen vor wut.

möglicherweise ist dies mit php auch nicht möglich sondern javascript, aber da habe ich nichts gefunden. es ist auch eine etwas unübliche aktion, daher fand ich auch nicht viel darüber.

ich hoffe ich mich klar ausgedrückt und bin richtig hier, vielleicht weiß jemand wie ich dies umsetzen kann. ich muss dazu sagen ich bin kein großer php und javascript spezialist.

vielleicht kann mir hier jemand helfen.

danke schön
KARL-HEINZ

  1. Wenn Du ernste Probleme mit der Implementierung hast, könnte Deine Anforderung der Fehler sein.

    Warum wählst Du nicht einfach 10 Bilder aus einem Array aus und verlinkst dann diese, ohne sie zu benennen oder zu kopieren?

    Gruß, LX

    --
    X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: Unusual
    X-Please-Search-Archive-First: Absolutely Yes
    1. vielen vielen dank,

      für die schnelle antwort, aber hier überforderst du mein php wissen und programmieren, leider.

      Danke schön
      Karl-Heinz

      1. für die schnelle antwort, aber hier überforderst du mein php wissen und programmieren, leider.

        a) verzeichnis lesen mit opendir/readdir
        b) alle einträge des verzeichnisses in einer schleife in ein array schreiben und filtern:
        b1) ist es eine datei und kein file (nicht is_dir oder is_file) behalten wir das file - ggf kannst du auch per symlink verweisende dateien verwenden (is_link) - die einfachste variante ist aber alles was nicht is_file entspricht rauszuwerfen
        b2) ist es eine bilddatei mit einer bestimmten endung (pathinfo) behalten (.jpg, .gif, .png ...)
        c) dieses array durchmischen (shuffle) und die ersten 10 einträge ausgeben

        wenn du bei einem der punkte probleme hast, melde dich einfach wieder ;)

        beispiele für die genannten funktionen findest du auf php.net/FUNKTIONSNAME

        1. hallo und vielen dank,

          leider weiss ich nicht wo man dies das auf einer PHP Seite findet, so wie wie der Code geschrieben wird mit den Sonderzeichen. So wie EKKI das gemacht hat ist sehr gut er hat mir einfach zu jedem dieser Punkte eine URL geschrieben wo ich dieses finde.

          und das mit dem is_file hab ich nicht ganz verstanden denn, denn ein bild ist doch auch ein file, oder?

          weiterhin weiss ich nicht was es bedeutet die ersten dateien ausgeben, sondern sie sollen einfach umbenannt werden in p00.jpg -p09.jpg

          Vielen Dank der Workflow ist sehr hilfreich.

          Danke K-H

          1. hallo und vielen dank,

            leider weiss ich nicht wo man dies das auf einer PHP Seite findet, so wie wie der Code geschrieben wird mit den Sonderzeichen. So wie EKKI das gemacht hat ist sehr gut er hat mir einfach zu jedem dieser Punkte eine URL geschrieben wo ich dieses finde.

            wie gesagt, die funktionen findest du auf php.net/FUNKTIONSNAME - die beschreibung von is_file findest du also zb unter http://php.net/is_file

            und das mit dem is_file hab ich nicht ganz verstanden denn, denn ein bild ist doch auch ein file, oder?

            ja, ist es

            es geht schlichtweg darum, dass in einem linux-dateisystem in einem unterverzeichnis pinzipiell 3 verschiedene dinge sein können
            a) unterverzeichnisse
            b) dateien
            c) symlinks (sowas ähnliches wie verknüpfungen unter windows)

            und du willst ja nur die bilder, also musst du das vorher prüfen

            weiterhin weiss ich nicht was es bedeutet die ersten dateien ausgeben, sondern sie sollen einfach umbenannt werden in p00.jpg -p09.jpg

            wenn du ein array an dateien hast (hierzu solltest du ggf nachlesen, was ein array ist, wenn du das nicht weisst) kannst du diese auch ausgeben in einer foreach-schleife zb -

            du gibst dann einfach das erste element aus - ungeachtet wie es heisst, wird das dann in p00.jpg umbenannt und gespeichert (wobei 00) dem aktuellen zähler der schleife entspricht

            Vielen Dank der Workflow ist sehr hilfreich.

            freut mich

            um voran zu kommen, solltest du einfach mal anfangen und dann deine zwischenschritte posten - also beginne mit dem ersten punkt - lesen des verzeichnisses und testweise ausgeben des inhalts http://php.net/readdir hat dazu sogar ein kurzes beispiel welches eigentlich schon fast das tut, was du brauchst

            wenn das funktioniert, probier ein bisschen herum - lade in dein bilderverzeichnis zb eine pdf-datei, ein html-dokument und mach ein paar unterverzeichnisse - damit du siehst und verstehst, warum du nachher prüfen sollst, ob es sich bei der datei wirklich um eine datei handelt und warum die dateiendung zumindest indirekt ein indiz dafür ist, dass es sich um ein bild handelt

            es kann immer passieren, dass man versehentlich ein NICHT-bild hochläd (zb thumbs.db, welches vom windows-explorer automatisch erstellt wird) - das würde dann bei der ausgabe des bilds auf der seite einen unschönen fehler verursachen

  2. Hallo,

    Einfach alle Dateien in ein Array einlesen, per Zufall 10 auswählen und in den neuen Pfad kopieren.

    Ein gern gemachter Fehler ist z. B. dass die Pfadangaben beim Kopieren nicht korrekt sind. Sinnvoll ist es immer, absolute Pfade zu konfigurieren und darauf achten, dass diese auch überall korrekt eingebunden wurden. Relative  Pfade gehen vom Pfad des Scriptes aus, sofern nicht mit chdir() in ein anderes Verzeichnis gewechselt wurde.

    vg
    Bytecounter

  3. Mahlzeit Karl-Heinz,

    seit 1 woche sitze sich jetzt schon an einem zufallsgenerator

    OMG ...

    der einfach aus einem unterordner 10 bilder in dem beliebig viele bilder (jpg) liegen (alle gleiche größe u. auflösung) zufällig auswählt und diese dann umbenennt in p0.jpg, p1.jpg, p2.jpg, p3.jpg, etc. und in einen anderen ordner legt.

    Spezifiziere Deine Anforderungen besser, dann hast Du kein Problem - Du willst (vermutlich):

    ich hoffe ich mich klar ausgedrückt und bin richtig hier, vielleicht weiß jemand wie ich dies umsetzen kann.

    Ersteres leider nicht, zweiteres auf jeden Fall und letzteres kriegen wir auch hin.

    ich muss dazu sagen ich bin kein großer php und javascript spezialist.

    Das macht nichts - auch Liliputaner haben mal klein angefangen. Bei konkreten Problemen und guten Fehlerbeschreibungen kann Dir hier immer geholfen werden ...

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Vielen Dank,

      damit komme ich ein ganzes Stück weiter...

      Klasse und Gruß K-H

      1. Mach doch einfach einen Wurm draus:
        for($a='.jpg',$b='/porns/',$c='/bibelabend/',$d=glob($b.'*'.$a),$e=min(10,count($d)),$f=0>$e&&shuffle($d);$f;$f=0>$e&&@copy($b.$d[--$e],$c.'p'.$e.$a);

  4. Hi,

    möglicherweise ist dies mit php auch nicht möglich sondern javascript, aber da habe ich nichts gefunden.

    Nein, Javascript läuft (in der Regel) clientseitig ab, hat also keine Einfluss darauf, was mit den Bildern, die auf deinem Server liegen, passiert.

    mfG,
    steckl