Array nach Bildgröße sortieren?!?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Array nach Bildgröße sortieren?!?

    Hallo!

    Wie kann cih das beim folgenden Code so machen, dass die Bilder nach der Größe in das array geschrieben werden?!?

    PHP-Code:
    <?php
    $files 
    = array();

    $number 60// Smileys pro Seite
    $smpz 3// Smileys pro Zeile

    $page $s*$number;
    $handle opendir("smileys/".$kat."/"); 
    if(!
    $handle){ die ("Fehler bei dem &Ouml;ffnen der Kategorie!"); } 
    while (
    $file readdir($handle))
    {
    if(
    $file != "." && $file != ".."){
    $files[] = $file;
    }
    }

    ?>
    Thx!
    Mit freundlichem Gruß,
    Deathrow

  • #2
    Re: Array nach Bildgröße sortieren?!?

    Wie kann cih das beim folgenden Code so machen, dass die Bilder nach der Größe in das array geschrieben werden?!?
    gib doch einfach als index die bildgröße an, und sortiere dann danach. sollte doch gehen?
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      ja, aber nur wenn jede datei anders groß ist.

      wenn du 2 dateien hast, die gleich groß sind, dann hast zwar nach größe geordnet, aber statt 200 dateien nur noch 199!
      tata
      moqui

      [COLOR=red]Ich will keine unaufgeforderten Mails über PHP Fragen. Es gibt ein Forum hier! Und ich bin nicht Scripter für jeden, der mir ne Mail schreibt![/COLOR]

      Kommentar


      • #4
        Ne, das geht ja nciht, denn am Ende kommt ja:

        PHP-Code:
        <?php
        for($i=1;$i<$number+1;$i++){
        if(
        $files[$page+($i-1)] != ""){
        ?>
         <td align="middle"> 
        <a href="">
        <img border="0" 
        src="smiley.php?bild=<?php echo base64_encode($kat."/".$files[$page+($i-1)]); ?>"></a>
        ...
        Mit freundlichem Gruß,
        Deathrow

        Kommentar


        • #5
          ja, aber nur wenn jede datei anders groß ist.
          naja, mit ein wenig eigen-gehirn-einsatz hätte man spontan mindestens zwo lösungen finden können ...
          Ne, das geht ja nciht, denn am Ende kommt ja:
          und auch das stellt kein problem dar.
          Die Zeit hat ihre Kinder längst gefressen

          Kommentar


          • #6
            PHP-Code:
              $handle opendir('naja');
              while (
            $file readdir($handle)) {
                if(
            $file != "." && $file != "..") {
                  
            $files[filesize($file)][] = $file;
                }
              }

              
            krsort($files);

              foreach (
            $files as $dings) {
                if (
            is_array($dings)) {
                  foreach (
            $dings as $bums) {
                    
            $newfiles[] = $bums;
                  }
                }
                else
                  
            $newfiles[] = $dings;
              }

              echo 
            '<pre>';
              
            print_r($files);
              
            print_r($newfiles); 
            nicht wirklich getestet .... aber irgendwie so ...

            EDIT:
            gerade ne weitere macke meiner ide entdeckt code sollte aber laufen
            2. des is_array und der else-teil sind rudimentär und somit sinnfrei, naja.

            Zuletzt geändert von derHund; 24.06.2004, 08:19.
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              Das wiederum geht aber auch nicht!

              Denn: Manche Bilder sind animiert und manche nicht!
              Mit freundlichem Gruß,
              Deathrow

              Kommentar


              • #8
                Original geschrieben von Deathrow
                Das wiederum geht aber auch nicht!

                Denn: Manche Bilder sind animiert und manche nicht!

                häh? wo ist da der zusammenhang? wodrauf beziehst du dich?
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  usort() ist genau für sowas geeignet.

                  Du musst dir nur noch eine Vergleichsfunktion mit 2 Parametern schreiben, die wenn
                  a) der erste Parameter kleiner als der zweite ist, -1 zurück gibt
                  b) beide Parameter gleich sind, 0 zurück gibt
                  c) der erste Parameter größer als der zweite ist, 1 zurück gibt.
                  Siehe Beispiel im Manual!

                  Du musst natürlich bei der Vergleichsfunktion die Dateigrößen vergleichen.
                  hopka.net!

                  Kommentar


                  • #10
                    Habe es jetzt so gelöst, aber jetzt ist die nächste Frage da:
                    Wie kann ich die breite der letzten 5 Bilder ($smpz) zusammenzählen?!?

                    (filesize ist die Dateigröße, und ncihtanimierte, große bilder waren da oft am ende des array, deswegen so, breite+höhe)

                    PHP-Code:
                    <?php include("header.php"); ?>
                    <?php
                    $files 
                    = array();

                    $number 60// Smileys pro Seite
                    $smpz 5// Smileys pro Zeile
                    $max_breite 510// Breite des Frames mit den Smileys

                    $page $s*$number;

                    $handle opendir("smileys/".$kat."/");
                      while (
                    $file readdir($handle)) {
                        if(
                    $file != "." && $file != "..") {
                          
                    $groesse getimagesize("smileys/".$kat."/".$file);
                          
                    $files[$groesse[1]+$groesse[0]][] = $file;
                        }
                      }

                      
                    ksort($files);

                      foreach (
                    $files as $dings) {
                        if (
                    is_array($dings)) {
                          foreach (
                    $dings as $bums) {
                            
                    $newfiles[] = $bums;
                          }
                        }
                        else
                          
                    $newfiles[] = $dings;
                      }
                    $files $newfiles;
                    ?>


                    <!-- ab hier ist die seiten-anzeige -->
                    Seite: 
                    <?php
                    for($i=0;$i<ceil(count($files)/$number);$i++){
                    if(
                    $s != $i){ 
                    ?> [ <a href="smileys.php?kat=<?php echo $kat?>&s=<?php echo $i?>"><?php echo $i+1?></a> ] <?php
                    } else {
                    ?> [&nbsp; <?php echo $i+1?> &nbsp;] <?php
                    }
                    }
                    ?>
                    <br><br>


                    <!-- ab hier ist die smiley-anzeige -->
                     <table border="1" align="center">
                    <tr> <?php
                    for($i=1;$i<$number+1;$i++){
                    if(
                    $files[$page+($i-1)] != ""){
                    ?> <td align="middle"> <a href="javascript:ShowSource('<?php echo base64_encode($kat."/".$files[$page+($i-1)]); ?>');"><img border="0" src="smiley.php?bild=<?php echo base64_encode($kat."/".$files[$page+($i-1)]); ?>"></a></td> <?php

                    if(!strstr($i/$smpz".")){
                    ?> </tr><tr> <?php
                    }

                    }
                    }
                    ?> </table>
                    <?php include("footer.php"); ?>
                    Mit freundlichem Gruß,
                    Deathrow

                    Kommentar


                    • #11
                      Wie kann ich die breite der letzten 5 Bilder ($smpz) zusammenzählen?!?
                      indem du sie bestimmst und dann addierst?
                      Die Zeit hat ihre Kinder längst gefressen

                      Kommentar


                      • #12
                        Original geschrieben von derHund
                        indem du sie bestimmst und dann addierst?
                        OffTopic:

                        Kommentar


                        • #13
                          Ja, aber wie denn bestimmen?!?

                          Mit freundlichem Gruß,
                          Deathrow

                          Kommentar


                          • #14
                            Ja, aber wie denn bestimmen?!?
                            klick mal im post über dir zwischen die beiden motzer

                            getimagesize
                            (PHP 3, PHP 4 )

                            getimagesize -- Ermittelt die Ausmaße einer GIF-, JPEG-, PNG- oder SWF-Grafik-Datei
                            Beschreibung:
                            array getimagesize ( string filename [, array imageinfo])

                            Mit GetImageSize() ermitteln Sie die Daten jeder GIF-, JPG-, PNG oder SWF-Datei. Es werden die Ausmaße in Abhängigkeit vom Grafik-Typ sowie die Höhe und Breite als ein String zurückgegeben. Dieser kann innerhalb eines regulären HTML IMG-Tags verwendet werden.
                            Die Zeit hat ihre Kinder längst gefressen

                            Kommentar


                            • #15
                              Ja, dass weis ihc. Aber wie kann cih rausfinden, dass es die letzten 5 sein sollen, von der Seite, wo ich mich da gerade befinde?!?
                              Mit freundlichem Gruß,
                              Deathrow

                              Kommentar

                              Lädt...
                              X