cps: Zufallsbild mit php herausfiltern

hallo!

ich bin recht unerfahren mit php und möchte ein zufallsbild erscheinen lassen.
da alle bilder im selben ordner liegen habe ich mir einen code herausgesucht:

hier kam er her:

http://forum.de.selfhtml.org/archiv/2009/3/t184887/

<?php

$_files = glob('*.{gif}', GLOB_BRACE);
  if (count($_files) == 0) exit;
  shuffle($_files);

foreach( $_files as $filename )
  {
      if (false !== ($_imginfo = getimagesize($filename)))
      {
          header('Content-Type: '.$_imginfo['mime']);
          readfile($filename);
          exit;
      }
  }

?>

soweit funktioniert er einwandfrei.
ich möchte aber hinzufügen, dass er mir nur gifs mit einer bildhöhe von 360px anzeigt. ich habe nun lange rumprobiert mit getimagesize aber bin auf keine lösung gekommen.

ich wäre sehr dankbar, wenn mir jemand helfen kann.

grüße aus wien,

carl

  1. ich möchte aber hinzufügen, dass er mir nur gifs mit einer bildhöhe von 360px anzeigt. ich habe nun lange rumprobiert mit getimagesize aber bin auf keine lösung gekommen.

    Was war denn dein Ansatz?.

  2. Hi!

    ich möchte aber hinzufügen, dass er mir nur gifs mit einer bildhöhe von 360px anzeigt. ich habe nun lange rumprobiert mit getimagesize aber bin auf keine lösung gekommen.

    Du hast doch die Informationen von getimagesize() bereits vorliegen. Was genau ist jetzt dein Problem eine Bedingung zu formulieren, die einen der Werte vergleicht?

    Lo!

    1. Hi!

      ich möchte aber hinzufügen, dass er mir nur gifs mit einer bildhöhe von 360px anzeigt. ich habe nun lange rumprobiert mit getimagesize aber bin auf keine lösung gekommen.

      Du hast doch die Informationen von getimagesize() bereits vorliegen. Was genau ist jetzt dein Problem eine Bedingung zu formulieren, die einen der Werte vergleicht?

      Lo!

      mein problem ist, dass ich keine ahnung habe, wie ich sowas schreiben sollte.

      ich habe durch recherche herausgefunden, dass getimagesize helfen könnte,
      habe auch herausgefunden, dass der wert[1] die höhe angibt, scheitere aber schlicht am schreiben, da mir php nicht geläufig ist. bestehende codes für meine belange umschreiben klappt noch, aber neu schreiben nicht.
      könnte mir jemand die gewünschten zeilen dazuschreiben?

      danke

      1. Hi!

        habe auch herausgefunden, dass der wert[1] die höhe angibt, scheitere aber schlicht am schreiben, da mir php nicht geläufig ist.

        getimagesize() liefert ein Array. Das hast du in der Variable $_imginfo abgelegt. Wenn du das mit dem [1] verbindest, greifst du auf den gesuchten Wert. Eine Kontrollausgabe zeigt an, ob du richtig liegst:

        var_dump( $_imginfo[1] );

        Bekommst du nun den Rest allein hin?

        Lo!

        1. Hi!

          habe auch herausgefunden, dass der wert[1] die höhe angibt, scheitere aber schlicht am schreiben, da mir php nicht geläufig ist.

          getimagesize() liefert ein Array. Das hast du in der Variable $_imginfo abgelegt. Wenn du das mit dem [1] verbindest, greifst du auf den gesuchten Wert. Eine Kontrollausgabe zeigt an, ob du richtig liegst:

          var_dump( $_imginfo[1] );

          Bekommst du nun den Rest allein hin?

          Lo!

          leider nein. ich habe keine ahnung.

          1. Hi,

            Bekommst du nun den Rest allein hin?

            leider nein. ich habe keine ahnung.

            Dann besorgst du dir am besten erst mal ein bisschen davon.

            MfG ChrisB

            --
            “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
  3. Hi there,

    ich möchte aber hinzufügen, dass er mir nur gifs mit einer bildhöhe von 360px anzeigt. ich habe nun lange rumprobiert mit getimagesize aber bin auf keine lösung gekommen.

    Was genau hat mit getimagesize nicht funktioniert? Ob durch Absicht oder Zufall gewählt, getimagesize ist genau die Funktion Deiner Wahl...

    1. Hi there,

      ich möchte aber hinzufügen, dass er mir nur gifs mit einer bildhöhe von 360px anzeigt. ich habe nun lange rumprobiert mit getimagesize aber bin auf keine lösung gekommen.

      Was genau hat mit getimagesize nicht funktioniert? Ob durch Absicht oder Zufall gewählt, getimagesize ist genau die Funktion Deiner Wahl...

      ich komme einfach nicht klar mit dem schreiben des codes.
      theoretisch verstehe ich die funktionsweise, ich weiß aber nicht, wie ich mich mit php ausdrücken soll.
      vielleicht kannst du mir den code so erweitern, dass nur bilder mit höhe=360px angezeigt werden?

      danke, carl

      1. Hi there,

        vielleicht kannst du mir den code so erweitern, dass nur bilder mit höhe=360px angezeigt werden?

        naja, was getimagesize() zurückliefert hat Dir ja schon Dedlfix verraten. Die Schleife, in  der das Verzeichnis, indem sich die Bilder befinden, abgearbeitet wird, existiert auch schon. Jetzt musst Du nur noch dafür sorgen, daß Bilder, die Deiner Anforderung von Höhe = 360 nicht entsprechen, ignoriert werden. Das erledigst Du am besten mit einer Abfrage, in etwa:

          
        if ($_imginfo[1] != 360)  
        {  
        // hier kommt die Anweisung, dieses Bild zu ignorieren...  
        }  
          
        
        
        1. Hi there,

          vielleicht kannst du mir den code so erweitern, dass nur bilder mit höhe=360px angezeigt werden?

          naja, was getimagesize() zurückliefert hat Dir ja schon Dedlfix verraten. Die Schleife, in  der das Verzeichnis, indem sich die Bilder befinden, abgearbeitet wird, existiert auch schon. Jetzt musst Du nur noch dafür sorgen, daß Bilder, die Deiner Anforderung von Höhe = 360 nicht entsprechen, ignoriert werden. Das erledigst Du am besten mit einer Abfrage, in etwa:

          if ($_imginfo[1] != 360)
          {
          // hier kommt die Anweisung, dieses Bild zu ignorieren...
          }

          
          >   
          >   
          >   
            
          vielen dank schonmal, aber:  
          ich verstehe nichts. tut mir leid. jetzt schaut das ganze so aus und funktioniert überhaupt nicht mehr.  
            
          <?php  
            
            $\_files = glob('\*.{gif}', GLOB\_BRACE);  
            if (count($\_files) == 0) exit;  
            shuffle($\_files);  
            
            var\_dump( $\_imginfo[1] );  
            
            foreach( $\_files as $filename )  
            {  
                if (false !== ($\_imginfo = getimagesize($filename)))  
                {  
                    header('Content-Type: '.$\_imginfo['mime']);  
                    readfile($filename);  
                    exit;  
                }  
          	  if ($\_imginfo[1] != 360)  
                {  
                    header('Content-Type: '.$\_imginfo['mime']);  
                    readfile($filename);  
                    exit;  
                }  
            }  
            
          ?>  
            
          es dürfte dir/euch doch nicht schwer fallen, das richtig zu stellen, oder?  
            
          carl
          
          1. Moin!

            es dürfte dir/euch doch nicht schwer fallen, das richtig zu stellen, oder?

            Klar wäre das leicht. Aber das hilft dir doch nicht. Beim nächsten Problem stehst du dann wieder auf der Matte und willst es mal eben gemacht haben. So funktioniert die Hilfe in diesem Forum aber nicht.

            Wenn du Probleme beim Verständnis hast, es aber lernen willst, räumt man dir hier gerne Steine aus dem Weg und reist Bretter vom Kopf. Kostenlose Programmierdienstleistung findest du hier aber nur sehr selten.

            - Sven Rautenberg

            1. Wenn du Probleme beim Verständnis hast, es aber lernen willst, räumt man dir hier gerne Steine aus dem Weg und reist Bretter vom Kopf. Kostenlose Programmierdienstleistung findest du hier aber nur sehr selten.

              • Sven Rautenberg

              ja, das verstehe ich. nun habe ich nochmals etwas probiert und habs hinbekommen:

              <?php
                $_files = glob('*.{gif}', GLOB_BRACE);
                if (count($_files) == 0) exit;
                shuffle($_files);
                foreach( $_files as $filename )
                {
                    if (false !== ($_imginfo = getimagesize($filename)))
                    {
                       if ($_imginfo[1] == 360)
              {
                header('Content-Type: '.$_imginfo['mime']);
                        readfile($filename);
                        exit;
              }
                    }
                }
              ?>

              war ja im grunde nur eine zeile!

              vielen dank und einen schönen tag,
              grüße aus wien,

              carl

          2. Hi there,

            ich verstehe nichts. tut mir leid. jetzt schaut das ganze so aus und funktioniert überhaupt nicht mehr.

            Mir scheint, Du bist Dir über die Bedeutung von '!=' nicht wirklich im Klaren. Denn was Du geschrieben hast, bedeutet genau das Gegenteil von dem, was Du beabsichtigst, denn damit werden alle Bilder exkludiert, deren Höhe genau 360px beträgt, dafür werden jene ausgegeben, die eine andere Höhe haben. Besser also, Du teilst die Bedingungen auf und lässt den header- und readfile-Befehl nur für jene Bilder ausführen die die Bedingung erfüllen.

            es dürfte dir/euch doch nicht schwer fallen, das richtig zu stellen, oder?

            Stimmt...

  4. Hello,

    vermutlich hätte es genützt, wenn Du dir auch die Funktionsbeschreibung zu dieser kleinen Musterfunktion durchgelwesen hättest.

    http://forum.de.selfhtml.org/archiv/2009/3/t184887/#m1226218

    Es steht dort auch, dass die Funktion eigentlich für den Fehlerfall (es kann kein Bild zurückgegeben werden) noch einen anderen Header senden sollte, oder z.B. ein Ersatzbild (1-Pixel-Grafik oder ähnlich).

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de