TS: Mit PHP Bild-Daten aus einem Ordner auslesen

Beitrag lesen

Hello,

sieht doch schon besser aus. Ein paar "Kleinigkeiten" sollten aber noch verbessert werden. :-)

Grundsätzlich solltest Du dich dazu durchringen, abgrenzbare Funktionen aus dem Code zu machen. Dann lassen sich die Fehler, notwenige Änderungen am Code, usw. besser zuordnen. Und auch anderenfalls sollten die "IF-Blöcke" auch immer das umschließen, was sie denn abfragen.

Beispiel: Wenn kein Handle für das Verzeichnis erstellt werden konnte, kann man auch keinen Kanal für dieses Handle wieder schließen. Es gibt ja keinen!

Und Variablen sollen das enthalten, was ihre Namen suggerieren. $verzeichnis ist daher ein irreführender Name. Du solltest z. B. lieber $dateiname dafür benutzen.

Ich ändere deshalb nicht grundsätzlich deinen Code, sondern sortiere ihn nur etwas.


<?php
function get_image_filenames($verzeichnis=false)
{
    if ($verzeichnis === false) return false;           ## Daisy-Chain-Skip
	$verzeichnis = rtrim($verzeichnis, '/') . '/';      ## Normierung nach POSIX
    $_liste = array();
	
    if ($vhandle = opendir($verzeichnis)) 
    {
        while (false !== ($filename = readdir($vhandle))) 
        {			
            if (is_file($filename)) 
            {
                if (false !== ($imgsize = getImageSize($verzeichnis . $filename)))   ## ist es ein Bild?
                {
                    $_liste[$filename] = array(
                      'name' => $filename,
                      'pfad' => ($verzeichnis . $filename),
                      'bildabmessungen' => $imgsize,
                      'berechnungen' => 'berechnungen'	 
                    );				
                    ## Berechnungen ist deine nächste Baustelle? 
                }
            }    
        }
        
        ksort($entry, SORT_NATURAL | SORT_FLAG_CASE);
        closedir($handle);
        return $_liste
    }    
    return false;
}        
#-------------------------------------------------------------------------------        
function html_list_filename($_liste=false)
{    
    if (($_liste === false) or (!is_array($_liste)) return false;           ## Daisy-Chain-Skip

    $htmlout = '';
    
    foreach ($_liste as $filename => $_fileinfo) 
    {
       $htmlout =  "\n<pre>\n"; 
       $htmlout .= "name:\t  {$filename}\n";
       $htmlout .= "\n";
       $htmlout .= "pfad & name:\t  {$_fileinfo[path]}\n";
       $htmlout .= "\n";
       $htmlout .= "Bildabmessungen:\n";
       $htmlout .= "\twidth:\t {$entry[$verzeichnis]['bildabmessungen'][0]}\n";
       $htmlout .= "\theight:\t {$entry[$verzeichnis]['bildabmessungen'][1]}\n";
       $htmlout .= "\n";
       $htmlout .= "<a href=\"$path\">$path</a>\n";
       $htmlout .= "</pre>\n";
    }
    
    return $htmlout;

}
#-------------------------------------------------------------------------------            

$_liste = get_image_filenames('img/');    
echo html_list_filename($_liste);
    
?>

Das lässt sich bestimmt alles noch viel hübscher schreiben. Mindestens für den Anfang würde ich aber auf jeden Fall von Kurzschreibweisen absehen!

Man könnte es als nächsts nun noch durch Error-Logging ergänzen, oder den berüchtigten Filter auf MIME-Types. Da getimagesize() hierfür schon sehr viele Informationen zur Verfügung stellt (im zweiten, bisher ungenutzten Parameter), würde ich dort ansetzen.

Bitte selber den/die Fehler suchen, der/die laut Highlighter noch drinstecken. Ich kann es jetzt so nicht testen.

Liebe Grüße
Tom S.

--
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.
0 70

Mit PHP Bild-Daten aus einem Ordner auslesen

einsiedler
  • javascript
  • php
  1. 0
    MudGuard
    1. 0
      Matthias Apsel
      • php
      1. 0
        Felix Riesterer
        1. 0
          einsiedler
    2. 0
      einsiedler
  2. 0
    dedlfix
    1. 0
      einsiedler
      1. 0
        dedlfix
  3. 1
    Rolf B
  4. 0
    TS
    • php
    • programmiertechnik
    1. 0
      dedlfix
      1. 0
        TS
        1. 0
          dedlfix
          1. 0
            TS
            1. 0
              dedlfix
              1. 0
                TS
                • performance
                • php
                • programmiertechnik
                1. 0
                  dedlfix
                  1. 0
                    Rolf B
                    1. 0
                      TS
                    2. 0
                      Tabellenkalk
                      1. 0
                        Regina Schaukrug
  5. 1
    Robert B.
    • kontextwechsel
    • php
    1. 0
      TS
  6. 0
    einsiedler
    1. 0
      Tabellenkalk
      1. 0
        einsiedler
    2. 0
      einsiedler
  7. 0
    einsiedler
    1. 0
      Rolf B
      1. 0
        einsiedler
        1. 0
          TS
          • php
          • programmiertechnik
          1. 0
            TS
            • korrektur
            • php
            • programmiertechnik
          2. 0
            einsiedler
            1. 0
              TS
              1. 0
                einsiedler
                1. 0
                  TS
                  • php
                  • programmiertechnik
                  • programmiertechnik
                  1. 0
                    einsiedler
                    1. 0
                      TS
                      1. 0
                        einsiedler
                      2. 0

                        Debuggen

                        Regina Schaukrug
                      3. 0
                        TS
                        1. 0
                          einsiedler
                          1. 0
                            TS
                            1. 0
                              einsiedler
                              1. 0
                                TS
                                1. 0
                                  einsiedler
                                  1. 0

                                    Letzter Versuch?

                                    TS
                                    1. 0
                                      einsiedler
                                      1. 0
                                        TS
                                        1. 0
                                          einsiedler
                                          1. 0
                                            einsiedler
                                            1. 0
                                              Tabellenkalk
                                              1. 0
                                                einsiedler
                                                1. 0
                                                  Tabellenkalk
                                                  1. 0
                                                    einsiedler
                                                    1. 0
                                                      Rolf B
                                                    2. 0
                                                      Tabellenkalk
                                    2. 0
                                      einsiedler
                                      1. 0
                                        TS
                                        1. 0
                                          einsiedler
                                          1. 0
                                            TS
                                            1. -1
                                              einsiedler
                                              1. 0
                                                TS
                                                1. 0
                                                  einsiedler
                        2. 0
                          einsiedler
                          1. 3

                            Aufforderung zu mehr Geduld

                            Camping_RIDER
                            • moderation
                            • zu diesem forum
          3. 0
            einsiedler
    2. 1
      TS
      • php
      • programmiertechnik
    3. 0
      Robert B.
      • kontextwechsel
      • php