Ergebnis 1 bis 5 von 5

Thema: Image-Resizer

  1. #1
    Bandit
    Gast

    Standard Image-Resizer

    Da man dieses Thema immer wiedermal sieht, hier ein Script, bei dem man ein Quellverzeichnis, ein Zielverzeichnis, Höhe und/oder Breite, Proportionalität und Qualität angeben kann. Weder der HTML- noch der PHP-Code erheben den Anspruch auf Perfektion, da ich diese Scripte vor langer Zeit mal auf die schnelle zusammengeschraubt habe und nur für eigene Sachen gebraucht wird. Außerdem wird dieses Script vermutlich auf einem Webserver Probleme in Sachen Laufzeit machen, wenn man viele Dateien verkleinern will. Deshalb nur für die eigene Entwicklungsumgebung zu empfehlen. Bei sehr großen Bildern kann auch schnell mal das Memory-Limit dazwischenfunken. Ich empfehle daher, in der php.ini die Werte für max_execution_time und memory_limit entsprechend hoch einzustellen.

    index.php
    PHP-Code:
    <html>
    <head>
    <title>Image-Resizer</title>
    </head>
    <body>
    <?php
       
    if ( ! isset($_POST["submit"]))
       {
    ?>
          <div align='center'>
            <center>
          <form action='<?php echo $_SERVER["SCRIPT_NAME"]; ?>' method='POST'>
          <table border='0' width='50%'>
            <tr>
              <td width='16%'></td>
              <td width='84%'><font size='5'><b>Image-Resizer</b></font></td>
            </tr>
            <tr>
              <td width='16%' height='20'>&nbsp;</td>
              <td width='84%' height='20'>&nbsp;</td>
            </tr>
            <tr>
              <td width='16%'>Quellverzeichnis:</td>
              <td width='84%'><input type='text' name='source' size='30'></td>
            </tr>
            <tr>
              <td width='16%'>Zielverzeichnis:</td>
              <td width='84%'><input type='text' name='destination' size='30'></td>
            </tr>
            <tr>
              <td width='16%'>Breite in Pixel:</td>
              <td width='84%'><input type='text' name='width' size='4'></td>
            </tr>
            <tr>
              <td width='16%'>Höhe in Pixel:</td>
              <td width='84%'><input type='text' name='height' size='4'></td>
            </tr>
              <tr>
              <td width='16%'>Qualität:</td>
              <td width='84%'><input type='text' name='quality' size='4' value='100'></td>
            </tr>
            <tr>
              <td width='16%'>Proportional:</td>
              <td width='84%'><input type='checkbox' name='fixed' checked></td>
            </tr>
            <tr>
              <td width='16%'></td>
              <td width='84%'></td>
            </tr>
            <tr>
              <td width='16%'></td>
              <td width='84%'><input type='submit' name='submit' value='Abschicken'</td>
            </tr>
          </table>
          </form>
            </center>
          </div>
    <?php
       
    }
       else
       {
          
    // Bei Timeout-Problemen den Wert erhöhen
          
    ini_set("max_execution_time""3000");
          
    $source $_POST["source"];
          
    $dest   $_POST["destination"];
          
    $width  $_POST["width"];
          
    $height $_POST["height"];
          
    $quality $_POST["quality"];
          if (isset(
    $_POST["fixed"]))
            
    $fixed   true;
          else
            
    $fixed   false;
          if (! 
    strlen ($source))
          { 
             echo 
    "Kein Quellverzeichnis";
             exit;
          }
          if (! 
    strlen ($dest))
          { 
             echo 
    "Kein Zielverzeichnis";
             exit;
          }
          if (! 
    strlen ($width) && ! strlen ($height))
          { 
             echo 
    "Keine Größen angegeben";
             exit;
          }
          if (
    $fixed)
          {
             if (
    strlen ($width))
                
    $height 0;
              else if (
    strlen ($height))
                
    $widht 0;
          }
          include_once(
    "./functions.inc.php");
          
    $data getImagesFromPath($source);
          if (! 
    file_exists($dest))
          {
             if ( ! 
    mkdir ($dest"0777"))
             {
               echo 
    "Verzeichnis $dest konnte nicht angelegt werden";
               exit;
             }
          }
          foreach(
    $data as $name)
          {
              
    $in  $source "/" $name;
              
    $out $dest "/" $name;
              
    $out str_replace(" ""_"$out);
              
    $ret resizeImage($in$out$width$height$quality);
              if (
    $ret)
                echo 
    "Grafik $out erzeugt<br>\n";
              else
                echo 
    "<font color='#FF0000'>Grafik $out konnte nicht erzeugt werden</font><br>\n";
          }
       }
    ?>
    </body>
    </html>
    functions.inc.php
    PHP-Code:
    <?php
      
    function getImagesFromPath($path)
      { 
        
    $result = array(); 
        
    $handle=opendir($path); 
        while (
    $file readdir ($handle)) 
        { 
           if (
    $file != "." && $file != ".."
           { 
              if (! 
    is_dir($file)) 
              { 
                
    $tmp strtolower($file);
                
    $sub substr($tmp, -4); 
                if (
    $sub == ".png" || $sub == ".jpg" || $sub == ".gif"
                   
    $result[] = $file
              }
           } 
        } 
        return 
    $result
      } 
      function 
    resizeImage($file_name_src$file_name_dest$width 0$height 0$quality 100)
      {
       if (
    file_exists($file_name_src)  && isset($file_name_dest))
       {
           if (
    $width == && $height == 0)
             return 
    false;
     
           
    $file_name_dest strtolower($file_name_dest);
     
           
    $est_src pathinfo(strtolower($file_name_src));
           
    $est_dest pathinfo(strtolower($file_name_dest));
           
    $size getimagesize($file_name_src);
           if (
    $height && ! $width)
           {
             
    $h number_format($height0',''');
             
    $w number_format(($size[0]/$size[1])*$height,0,',','');
           }
           else if (! 
    $height && $width)
           {
             
    $w number_format($width0',''');
             
    $h number_format(($size[1]/$size[0])*$width,0,',','');
           }
           else
           {
             
    $h number_format($height0',''');
             
    $w number_format($width0',''');
           }
           if (
    $est_dest['extension'] == "gif" || $est_dest['extension'] == "jpg")
           {
               
    $file_name_dest substr_replace($file_name_dest'jpg', -3);
               
    $dest imagecreatetruecolor($w$h);
               
    imageantialias($destTRUE);
           }
           elseif (
    $est_dest['extension'] == "png")
           {
               
    $dest imagecreatetruecolor($w$h);
               
    imageantialias($destTRUE);
           } 
           else
           {
               return 
    FALSE;
           }
           switch(
    $size[2])
           {
           case 
    1:      //GIF
               
    $src imagecreatefromgif($file_name_src);
               break;
           case 
    2:      //JPEG
               
    $src imagecreatefromjpeg($file_name_src);
               break;
           case 
    3:      //PNG
               
    $src imagecreatefrompng($file_name_src);
               break;
           default:
               return 
    FALSE;
               break;
           }
           
    imagecopyresampled($dest$src0000$w$h$size[0], $size[1]);
     
           switch(
    $size[2])
           {
           case 
    1:
                
    imagegif($dest,$file_name_dest);
                break;
           case 
    2:
               
    imagejpeg($dest,$file_name_dest$quality);
               break;
           case 
    3:
               
    imagepng($dest,$file_name_dest);
           }

           
    imagedestroy($src);
           
    imagedestroy($dest);
           return 
    TRUE;
       }
       return 
    FALSE;
    }
    Das Ganze natürlich ohne Gewähr und Garantie.
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Geändert von bandit600 (11.02.2009 um 09:52 Uhr)

  2. #2
    Forum Guru Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Image-Resizer

    Schön, vor allem die resizeImage-Funktion sollte hilfreich sein.

  3. #3
    Fortgeschrittene/r Avatar von SpeedFire
    Registriert seit
    01.07.2008
    Ort
    Meilsdorf
    Alter
    23
    Beiträge
    185
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Image-Resizer

    mir ist ein kleiner Fehler aufgefallen
    eine checkbox ist nur mit einer value="" gesetzt
    ohne wird dein isset niemals ein true zurück geben
    br:^ n4:| ie:% mo:} va:} de:> zu:) fl:| ss:} ls:[ js:|
    Dieser Text ist nicht sinnlos, sondern sagt viel über mich aus!

  4. #4
    Bandit
    Gast

    Standard AW: Image-Resizer

    Zitat Zitat von SpeedFire Beitrag anzeigen
    ohne wird dein isset niemals ein true zurück geben
    Doch. Checkboxen werden nur weitergereicht, wenn sie angeklickt wurden. Der Wert ist dabei wurscht.

  5. #5
    Fortgeschrittene/r Avatar von SpeedFire
    Registriert seit
    01.07.2008
    Ort
    Meilsdorf
    Alter
    23
    Beiträge
    185
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Image-Resizer

    ich wollte mir abgewöhnen so um die ecke zu denken
    br:^ n4:| ie:% mo:} va:} de:> zu:) fl:| ss:} ls:[ js:|
    Dieser Text ist nicht sinnlos, sondern sagt viel über mich aus!

Ähnliche Themen

  1. image hoster | image-uploads.de v.3
    Von Hubi im Forum Link Tipps
    Antworten: 10
    Letzter Beitrag: 10.06.2008, 16:23
  2. Image-Uploads.de V.2
    Von Hubi im Forum Eure Homepages und Foren - Vorstellung und Bewertungen
    Antworten: 6
    Letzter Beitrag: 03.05.2008, 15:26
  3. Image-Map
    Von Jenni im Forum Forum für Grafiken und Bildbearbeitung
    Antworten: 4
    Letzter Beitrag: 29.08.2006, 08:57
  4. Image Map???
    Von Cinderella im Forum HTML & CSS Forum
    Antworten: 7
    Letzter Beitrag: 01.03.2005, 00:52
  5. image map
    Von norf im Forum HTML & CSS Forum
    Antworten: 2
    Letzter Beitrag: 03.11.2004, 23:54

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •