Anzeige

thumbnail erstellen.

thumbnail erstellen. | PSD-Tutorials.de

Erstellt von puur, 31.05.2009.

  1. puur

    puur Nicht mehr ganz neu hier

    Dabei seit:
    06.10.2007
    Beiträge:
    175
    Geschlecht:
    männlich
    thumbnail erstellen.
    Hi,
    hab da mal wieder ein Problem undzwar möchte ich ein Thumb durch PHP erstellen lassen. Das klappt auch wenn ich es mit einem Bild mache, nun wollte ich aber mal probieren das ganze mit mehr als nur einem Bild zu mache. Aber iwie klappt da nix hab die Vermutung, das es iwie an $_FILES['fupload']['name']; liegt weiß aber nicht genau ich geb euch mal den CODE:

    Index.php
    Code (Text):
    1.  
    2. <?php
    3.  session_start();
    4.    
    5.     require 'functions.php';
    6.    
    7.     if(isset($_FILES['fupload'])) {
    8.        
    9.        
    10.         $_SESSION['groesse']         = $_POST['groesse'];
    11.        
    12.         $path_to_image_directory     = 'images/full/';
    13.         $path_to_thumbs_directory     = 'images/thumbs/';
    14.        
    15.        
    16.         if(preg_match('/\.(jpg)|(gif)|(png)$/', $_FILES['fupload']['name'])) {
    17.            
    18.             $filename         = $_FILES['fupload']['name'];
    19.             $source            = $_FILES['fupload']['tmp_name'];
    20.             $target            = $path_to_image_directory . $filename;
    21.            
    22.             move_uploaded_file($source, $target);
    23.            
    24.             createThumbnail($filename);
    25.            
    26.  
    27.         } else {
    28.             echo 'Bitte nur Bilder im Format: *.jpg, *.png, *.gif';
    29.         }
    30.        
    31.     }
    32.  
    33. ?>
    34.  
    35. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    36.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    37.        
    38. <html xmlns="http://www.w3.org/1999/xhtml">
    39.     <head>
    40.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    41.         <link rel="stylesheet" href="css/default.css" />
    42.         <link rel="stylesheet" href="css/reset.css" />
    43.         <script type="text/javascript" src="script.js"></script>        
    44.         <title>Untitled Document</title>
    45.     </head>
    46.     <body>
    47.         <div id="container">
    48.  
    49.             <?php if(!isset($_POST['anzahl'])) { ?>
    50.  
    51.             <form method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
    52.                
    53.                 <label>Wieviele Thumbs mchtest du erstellen ?</label><br />
    54.                 <input type="text" name="anzahl" />
    55.                 <input type="submit" value="o.k" />
    56.                
    57.             </form>
    58.  
    59.             <?php } if(isset($_POST['anzahl'])) { ?>
    60.  
    61.             <form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF'] ?>" method="POST">
    62.                
    63.                 <label for="groesse">Breite der Thumbs ?</label><br />
    64.                 <input type="text" name="groesse" id="groesse" /><br />
    65.                 <br /><br />
    66.                 <label for="t1">Bilder hochladen</label><br />
    67.                
    68.                 <?php
    69.                    
    70.                     for($i = 0; $i < $_POST['anzahl']; $i++) {
    71.                         echo '<input type="file" name="fupload" /><br />';
    72.                     }
    73.                    
    74.                 ?>
    75.                
    76.                 <br />
    77.                 <input type="submit" value="Go!" />
    78.             </form>
    79.            
    80.             <?php } ?>
    81.            
    82.         </div>
    83.     </body>
    84. </html>
    85.  
    86.  
    FUNCTIONS.php
    Code (Text):
    1.  
    2.  
    3. <?php
    4.    
    5.     function createThumbnail($filename) {
    6.        
    7.         $final_width_of_image         = $_SESSION['groesse'];
    8.        
    9.         $path_to_image_directory     = 'images/full/';
    10.         $path_to_thumbs_directory     = 'images/thumbs/';
    11.        
    12.        
    13.         if(preg_match('/[.]jpg$/', $filename)) {
    14.             $im = imagecreatefromjpeg($path_to_image_directory . $filename);
    15.         } else if(preg_match('/[.]gif$/', $filename)) {
    16.             $im = imagecreatefromgif($path_to_image_directory . $filename);
    17.         } else if(preg_match('/[.]png$/', $filename)) {
    18.             $im = imagecreatefrompng($path_to_image_directory . $filename);
    19.         }
    20.            
    21.        
    22.         $ox    = imagesx($im);
    23.         $oy = imagesy($im);
    24.            
    25.         $nx = $final_width_of_image;
    26.         $ny = floor($oy * ($nx / $ox));
    27.            
    28.         $nm = imagecreatetruecolor($nx, $ny);
    29.            
    30.         imagecopyresized($nm, $im, 0, 0, 0, 0, $nx, $ny, $ox, $oy);
    31.            
    32.         if(!file_exists($path_to_thumbs_directory)) {
    33.             if(mkdir($path_to_thumbs_directory)) {
    34.                    
    35.                 imagejpeg($nm, $path_to_thumbs_directory . $filename);
    36.                    
    37.                 $tn = '<a href="'. $path_to_image_directory . $filename .'"><img style="border: 0;" src="'. $path_to_thumbs_directory . $filename .'" alt="'. $filename .'" /></a>';
    38.                 $tn .= '<br />Congrats! Your folder has been successfuly created.';
    39.                    
    40.                 echo $tn;
    41.             }
    42.  
    43.         } else {
    44.                
    45.             imagejpeg($nm, $path_to_thumbs_directory . $filename);
    46.                
    47.             $tn = '<a href="'. $path_to_image_directory . $filename .'"><img style="border: 0;" src="'. $path_to_thumbs_directory . $filename .'" alt="'. $filename .'" /></a>';
    48.             $tn .= '<br />Congrats! Your image has been successfuly created.';
    49.            
    50.             echo $tn;            
    51.         }
    52.     }
    53. ?>
    54.  
    55.  
     
    Zuletzt bearbeitet: 03.06.2009
    #1      
  2. r3nt5ch3r

    r3nt5ch3r ~ Allround pG ~

    Dabei seit:
    10.03.2006
    Beiträge:
    1.836
    Geschlecht:
    männlich
    thumbnail erstellen.
    AW: thumbnail erstellen.

    echo '<input type="file" name="fupload'.$i.'" /><br />';
    vs.
    if(isset($_FILES['fupload'])) {

    soll heißen: name ist fupload0, fupload1 usw du checkst aber nur fupload -> gibt es natürlich nicht...

    2. require 'index.php'; <- weg machen in in der Funktion "createThumbnail"
    3. $path_to_image_directory <- gibts nicht in der Funktion "createThumbnail"
    4. keine Lust mehr weiter zu schauen. Lern php dann nerv uns wieder, Danke!

    ok weil ich "nett" bin hab ichs mal LAUFFÄHIG (das heißt alles andere als richtig und gut) gemacht:

    PHP:
    1. <?php
    2.  
    3.     if(isset($_FILES['fupload0'])) {
    4.        
    5.         $final_width_of_image         = $_POST['groesse'];
    6.    
    7.         $path_to_image_directory     = 'images/full/';
    8.         $path_to_thumbs_directory     = 'images/thumbs/';
    9.        
    10.         require 'functions.php';
    11.        
    12.         if(preg_match('/[.](jpg)|(gif)|(png)$/', $_FILES['fupload0']['name'])) {
    13.            
    14.             $filename         = $_FILES['fupload0']['name'];
    15.             $source            = $_FILES['fupload0']['tmp_name'];
    16.             $target            = $path_to_image_directory . $filename;
    17.            
    18.             move_uploaded_file($source, $target);
    19.            
    20.             createThumbnail($filename);
    21.         } else {
    22.             echo 'Bitte nur Bilder im Format: *.jpg, *.png, *.gif';
    23.         }
    24.        
    25.     }
    26.  
    27. ?>
    28.  
    29. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    30.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    31.        
    32. <html xmlns="http://www.w3.org/1999/xhtml">
    33.     <head>
    34.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    35.         <link rel="stylesheet" href="css/default.css" />
    36.         <link rel="stylesheet" href="css/reset.css" />
    37.         <script type="text/javascript" src="script.js"></script>        
    38.         <title>Untitled Document</title>
    39.     </head>
    40.     <body>
    41.         <div id="container">
    42.  
    43.             <?php if(!isset($_POST['anzahl'])) { ?>
    44.  
    45.             <form method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
    46.                
    47.                 <label>Wieviele Thumbs mchtest du erstellen ?</label><br />
    48.                 <input type="text" name="anzahl" />
    49.                 <input type="submit" value="o.k" />
    50.                
    51.             </form>
    52.  
    53.             <?php } if(isset($_POST['anzahl'])) { ?>
    54.  
    55.             <form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF'] ?>" method="POST">
    56.                
    57.                 <label for="groesse">Breite der Thumbs ?</label><br />
    58.                 <input type="text" name="groesse" id="groesse" /><br />
    59.                 <br /><br />
    60.                 <label for="t1">Bilder hochladen</label><br />
    61.                
    62.                 <?php
    63.                    
    64.                     for($i = 0; $i < $_POST['anzahl']; $i++) {
    65.                         echo '<input type="file" name="fupload'.$i.'" /><br />';
    66.                     }
    67.                    
    68.                 ?>
    69.                
    70.                 <br />
    71.                 <input type="submit" value="Go!" />
    72.             </form>
    73.            
    74.             <?php } ?>
    75.            
    76.         </div>
    77.     </body>
    78. </html>
    PHP:
    1. <?php
    2.    
    3.     function createThumbnail($filename) {
    4.        
    5.         $path_to_image_directory     = 'images/full/';
    6.         $path_to_thumbs_directory     = 'images/thumbs/';
    7.        
    8.        
    9.         if(preg_match('/[.]jpg$/', $filename)) {
    10.             $im = imagecreatefromjpeg($path_to_image_directory . $filename);
    11.         } else if(preg_match('/[.]gif$/', $filename)) {
    12.             $im = imagecreatefromgif($path_to_image_directory . $filename);
    13.         } else if(preg_match('/[.]png$/', $filename)) {
    14.             $im = imagecreatefrompng($path_to_image_directory . $filename);
    15.         }
    16.            
    17.        
    18.         $ox    = imagesx($im);
    19.         $oy = imagesy($im);
    20.            
    21.         $nx = $_POST['groesse'];
    22.         $ny = floor($oy * ($nx / $ox));
    23.            
    24.         $nm = imagecreatetruecolor($nx, $ny);
    25.            
    26.         imagecopyresized($nm, $im, 0, 0, 0, 0, $nx, $ny, $ox, $oy);
    27.            
    28.         if(!file_exists($path_to_thumbs_directory)) {
    29.             if(mkdir($path_to_thumbs_directory)) {
    30.                    
    31.                 imagejpeg($nm, $path_to_thumbs_directory . $filename);
    32.                    
    33.                 $tn = '<a href="'. $path_to_image_directory . $filename .'"><img style="border: 0;" src="'. $path_to_thumbs_directory . $filename .'" alt="'. $filename .'" /></a>';
    34.                 $tn .= '<br />Congrats! Your folder has been successfuly created.';
    35.                    
    36.                 echo $tn;
    37.             }
    38.  
    39.         } else {
    40.                
    41.             imagejpeg($nm, $path_to_thumbs_directory . $filename);
    42.                
    43.             $tn = '<a href="'. $path_to_image_directory . $filename .'"><img style="border: 0;" src="'. $path_to_thumbs_directory . $filename .'" alt="'. $filename .'" /></a>';
    44.             $tn .= '<br />Congrats! Your folder has been successfuly created.';
    45.            
    46.             echo $tn;            
    47.         }
    48.     }
    49. ?>
    Noch ein paar Erklärungen:
    - $final_width_of_image, $path_to_image_directory, $path_to_thumbs_directory gibts nicht in der Funktion!
    - require 'index.php'; -> unnötig (evtl Endlosschleife beim requiren^^)
    - $_FILES['fupload'] ->$_FILES['fupload0'] -> damit sprech ich nur das 1. Bild an, dass übergeben wurde (du musst das natürlich noch anpassen an alle Bilder)

    (frag mich auch wie das mit einem Bild auch nur annähernd gehen konnte xD)
     
    Zuletzt bearbeitet: 31.05.2009
    #2      
  3. puur

    puur Nicht mehr ganz neu hier

    Dabei seit:
    06.10.2007
    Beiträge:
    175
    Geschlecht:
    männlich
    thumbnail erstellen.
    AW: thumbnail erstellen.

    wow... auf sone arrogante art kann ich verzichten! bin gerade dabei zu lernen..

    *edit* das ganze funktioniert immernoch nur mit einem Bild. Meine Frage war aber wie ich es hinbekomme es für mehrer Bilder zum laufen zu kriegen.

    Index.php
    Code (Text):
    1.  
    2. <?php
    3.  session_start();
    4.    
    5.     require 'functions.php';
    6.    
    7.     if(isset($_FILES['fupload'])) {
    8.        
    9.        
    10.         $_SESSION['groesse']         = $_POST['groesse'];
    11.        
    12.         $path_to_image_directory     = 'images/full/';
    13.         $path_to_thumbs_directory     = 'images/thumbs/';
    14.        
    15.        
    16.         if(preg_match('/\.(jpg)|(gif)|(png)$/', $_FILES['fupload']['name'])) {
    17.            
    18.             $filename         = $_FILES['fupload']['name'];
    19.             $source            = $_FILES['fupload']['tmp_name'];
    20.             $target            = $path_to_image_directory . $filename;
    21.            
    22.             move_uploaded_file($source, $target);
    23.            
    24.             createThumbnail($filename);
    25.            
    26.  
    27.         } else {
    28.             echo 'Bitte nur Bilder im Format: *.jpg, *.png, *.gif';
    29.         }
    30.        
    31.     }
    32.  
    33. ?>
    34.  
    35. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    36.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    37.        
    38. <html xmlns="http://www.w3.org/1999/xhtml">
    39.     <head>
    40.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    41.         <link rel="stylesheet" href="css/default.css" />
    42.         <link rel="stylesheet" href="css/reset.css" />
    43.         <script type="text/javascript" src="script.js"></script>        
    44.         <title>Untitled Document</title>
    45.     </head>
    46.     <body>
    47.         <div id="container">
    48.  
    49.             <?php if(!isset($_POST['anzahl'])) { ?>
    50.  
    51.             <form method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
    52.                
    53.                 <label>Wieviele Thumbs mchtest du erstellen ?</label><br />
    54.                 <input type="text" name="anzahl" />
    55.                 <input type="submit" value="o.k" />
    56.                
    57.             </form>
    58.  
    59.             <?php } if(isset($_POST['anzahl'])) { ?>
    60.  
    61.             <form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF'] ?>" method="POST">
    62.                
    63.                 <label for="groesse">Breite der Thumbs ?</label><br />
    64.                 <input type="text" name="groesse" id="groesse" /><br />
    65.                 <br /><br />
    66.                 <label for="t1">Bilder hochladen</label><br />
    67.                
    68.                 <?php
    69.                    
    70.                     for($i = 0; $i < $_POST['anzahl']; $i++) {
    71.                         echo '<input type="file" name="fupload" /><br />';
    72.                     }
    73.                    
    74.                 ?>
    75.                
    76.                 <br />
    77.                 <input type="submit" value="Go!" />
    78.             </form>
    79.            
    80.             <?php } ?>
    81.            
    82.         </div>
    83.     </body>
    84. </html>
    85.  
    86.  
    FUNCTIONS.php
    Code (Text):
    1.  
    2.  
    3. <?php
    4.    
    5.     function createThumbnail($filename) {
    6.        
    7.         $final_width_of_image         = $_SESSION['groesse'];
    8.        
    9.         $path_to_image_directory     = 'images/full/';
    10.         $path_to_thumbs_directory     = 'images/thumbs/';
    11.        
    12.        
    13.         if(preg_match('/[.]jpg$/', $filename)) {
    14.             $im = imagecreatefromjpeg($path_to_image_directory . $filename);
    15.         } else if(preg_match('/[.]gif$/', $filename)) {
    16.             $im = imagecreatefromgif($path_to_image_directory . $filename);
    17.         } else if(preg_match('/[.]png$/', $filename)) {
    18.             $im = imagecreatefrompng($path_to_image_directory . $filename);
    19.         }
    20.            
    21.        
    22.         $ox    = imagesx($im);
    23.         $oy = imagesy($im);
    24.            
    25.         $nx = $final_width_of_image;
    26.         $ny = floor($oy * ($nx / $ox));
    27.            
    28.         $nm = imagecreatetruecolor($nx, $ny);
    29.            
    30.         imagecopyresized($nm, $im, 0, 0, 0, 0, $nx, $ny, $ox, $oy);
    31.            
    32.         if(!file_exists($path_to_thumbs_directory)) {
    33.             if(mkdir($path_to_thumbs_directory)) {
    34.                    
    35.                 imagejpeg($nm, $path_to_thumbs_directory . $filename);
    36.                    
    37.                 $tn = '<a href="'. $path_to_image_directory . $filename .'"><img style="border: 0;" src="'. $path_to_thumbs_directory . $filename .'" alt="'. $filename .'" /></a>';
    38.                 $tn .= '<br />Congrats! Your folder has been successfuly created.';
    39.                    
    40.                 echo $tn;
    41.             }
    42.  
    43.         } else {
    44.                
    45.             imagejpeg($nm, $path_to_thumbs_directory . $filename);
    46.                
    47.             $tn = '<a href="'. $path_to_image_directory . $filename .'"><img style="border: 0;" src="'. $path_to_thumbs_directory . $filename .'" alt="'. $filename .'" /></a>';
    48.             $tn .= '<br />Congrats! Your image has been successfuly created.';
    49.            
    50.             echo $tn;            
    51.         }
    52.     }
    53. ?>
    54.  
    55.  
     
    Zuletzt bearbeitet: 03.06.2009
    #3      
  4. CIX88

    CIX88 Aktives Mitglied

    Dabei seit:
    06.04.2006
    Beiträge:
    814
    Geschlecht:
    männlich
    Ort:
    GR
    thumbnail erstellen.
    AW: thumbnail erstellen.

    Zunächst ist im regulären Ausdruck ein kleiner Fehler:
    > preg_match('/[.](jpg)|(gif)|(png)$/', $_FILES['fupload']['name'])

    besser:
    preg_match('/\.(jpg)|(gif)|(png)$/', $_FILES['fupload']['name'])

    Nur ein Punkt (nicht maskiert) ist ein Steuerzeichen, auch in einer Zeichenklasse.

    > für mehrer Bilder zum laufen

    Naja, einfach das ganze in eine Funktion packen.
    Aus einer Image-Ressource lassen sich auch mehrere Bilder speichern, solange nicht der Speicher gelöscht ist, aber das steht doch alles im PHP-Handbuch.

    Vorsicht nur ein Beispiel zum Prinzip:
    Thumbnail mit GDlib (einfach)

    Werden mehrere Bilder mittels $_FILES['fupload'] gesendet, dann das Array durchlaufen und die Bilder über eine Funktion erstellen lassen. Der Speicher sollte aber in der Funktion frei gemacht werden, sonst stirbt das Script !

    GDlib und der Speicherbedarf

    > Aber iwie klappt da nix
    Das ist eine sau schlechte Fehlerbeschreibung für Leute die helfen sollen.
    Vielleicht geht es mal etwas genauer.
     
    #4      
  5. r3nt5ch3r

    r3nt5ch3r ~ Allround pG ~

    Dabei seit:
    10.03.2006
    Beiträge:
    1.836
    Geschlecht:
    männlich
    thumbnail erstellen.
    #5      
  6. puur

    puur Nicht mehr ganz neu hier

    Dabei seit:
    06.10.2007
    Beiträge:
    175
    Geschlecht:
    männlich
    thumbnail erstellen.
    AW: thumbnail erstellen.

    hm ich weiß nicht wie ich es noch besser erläutern kann. also ambesten ihr probiert das Script mal aus, dann müsste euch auffallen das nur vom ersten Bild ein thumb erstellt wird.
    Da stellt sich mir jetzt die Frage wieso ;) ich mein ne idee hab ich ja und zwar scheint mir so zu sein das $_FILES['fupload'] nur das erste Bild aufnimmt.
     
    #6      
  7. netbandit

    netbandit Aktives Mitglied

    12
    Dabei seit:
    18.05.2008
    Beiträge:
    1.145
    Geschlecht:
    männlich
    thumbnail erstellen.
    AW: thumbnail erstellen.

    Schau im fertigen Html-Quelltext, nachdem Du die Anzahl der Felder eingegeben hast. Sind es mehr als einer, wirst Du feststellen, dass

    HTML:
    1.  
    2. <input type="file" name="fupload" />
    3.  
    mehrmals vorkommt, der Name (in Deinem Fall fupload) sollte pro Formular allerdings nur einmal vorkommen, bzw muss eindeutig sein. Ansonsten wird php nur eines davon verarbeiten (ich glaube das Letzte), überschreiben sich gegenseitig. Arbeite mit Arrays und verarbeite diese z.B. in einer Schleife.

    Die vorherigen Tipps solltest Du trotzdem beherzigen, sonst geht der Server in die Knie (Speicher wieder frei geben, etc.) ;)
     
    Zuletzt bearbeitet: 03.06.2009
    #7      
x
×
×