[PHP] Bilder anhand von CSV-Datei verarbeiten

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Atkaz, 14. August 2010 .

  1. 14. August 2010
    Bilder anhand von CSV-Datei verarbeiten

    Hallo Leute,

    ich benötige mal euren fachmänischen Ratschlag. Ich hab eine Problem und zwas besteht dieses darin, dass ich meinen Kunden ermöglichen will Produkte mittels einer CSV Hochladen zu können. Das Script hab ich schon, nun hab ich ein Problem mit den Bildern. In meinem jetzigen Script bzw. CSV können die Kunden einen Link zum Bild angeben. Dabei wird die Datei a. geprüft ob Bild b) auf den server geladen c) wenn nötig scaliert d) in den Endordner Kopiert. Das script hat noch einige Fehler, aber es funktioniert. Nun besteht das Problem darin, dass es zu lange dauert, und die seite durch den ganzen Vorgang überlastet wird.

    a) gibt es eine andere möglichkeite das Bild Problem zu Lösen da ich die bilder auch gerne scalliert haben möchte?
    b) sollte jemdand ein gutes csv-Script habe, würde ich sehr dankbar sein, wenn er das reinstellen würde.


    Danke im Voraus

    Mein jetziges CSV-Bildupload-Script:


    PHP:
    <? php 

        
    ############# BildUpload 


    if ( getimagesize ( $Bild )== false ) {
    echo 
    "Bitte ueberpruefen Sie ihr Bild" ;
    exit;
    }
    echo 
    getimagesize ( $Bild );


        
     
    $dateiName  " $id - $Titel .jpg" ;   
    $ProduktVerzeichnis  = ( "Bilder/ $dateiName " );
    $Bildverzeichnis  $Bild ;

    $Bild  imageCreateFromJPEG ( $Bildverzeichnis );

    $alteBreite  ImageSX ( $Bild );
    $alteHoehe  ImageSY ( $Bild );
    $Pixel  $alteBreite + $alteHoehe ;

    if (
    $Pixel > 1160 ) {

    $neueBreite  620 ;
    $neueHoehe  500 ;


    $NeuesBild  imageCreateTrueColor ( $neueBreite , $neueHoehe );
    imageCopyResampled ( $NeuesBild $Bild 0 0 0 0 $neueBreite $neueHoehe $alteBreite $alteHoehe );
    imageJPEG ( $NeuesBild , $ProduktVerzeichnis );



            }
        
       
              



     
  2. 14. August 2010
    AW: CSV Problem!!!!

    hey google doch mal nach "imagemagick" für solche aufgaben eigenet sich imagemagick eigentlich immer besser als gdlib... gibt genug beispiele wie die consolenaufrufe funktionieren etc. also wenn du die möglichkeit hast imagemagick auf dem server zu installieren würde ich dir für das bildproblem die alternative empfehlen ...

    greetz
     
  3. 14. August 2010
    AW: CSV Problem!!!!


    hört sich gut an, hab mir grade ein dutzend theads und Anleitungen bei google durchgelesen, irgendwie schnall ich das nicht mit dem Prog. So wie ich es verstanden habe, muss ich das Prog ja installieren, kann dieses dann mit php mittels Funktionen aufrufen s.ä. Würde mich freuen, wenn du nen guten link zum installieren von diesem Prog posten würdest
     
  4. 15. August 2010
    AW: CSV Problem!!!!

    wo ist die seite denn gehostet? normalerweise ist das serverseitig und bei den meisten hostern ist es schon installiert... sonst einfach mal
    PHP:
    <? php phpinfo (); ?>
    ausgeben lassen und gucken ob es installiert ist und in welcher version...

    bei mir wird ne extra tabelle in der phpinfo angezeigt die heisst "imagick" habs eben nur lokal nachgeguckt. hoffe es hilft dir erstmal weiter.

    gruß
     
  5. 15. August 2010
    AW: CSV Problem!!!!

    habs hingekriegt, aber ohne ImageMagick....:]

    hier ist das Bild script:


    PHP:

    $path 
    "Bilder/" // Url zum Speicherordner der großen Bilder 
    $thumb_path  "Bilder/thumb/" // Url zum Speicherordner der Vorschaubilder 
    $config_width  "620" // Bildbreite max. bei großem Bild 
    $config_height  "540" // Bildhöhe max. bei großem Bild 
    $config_thumb_width  "320" // Bildbreite max. bei Vorschaubild 
    $config_thumb_height  "240" // Bildhöhe max. bei Vorschaubild 
    $resizequality  "100" // Bildkompressionsrate 0-100 
    $deindomain  "" ;   // unsere Domain 

    ## $Bild <- URL
    if ( $Bild  != ""
       { 

       
    // -------------------------------- 
       // Get File Upload Info 
       // -------------------------------- 

             
    $filename  $Titel
             
    $filetype  exif_imagetype  $Bild  ); 
             
    $filetmp  $Bild
             
       
    // -------------------------------- 
       // Check file type 
       // -------------------------------- 

       
    switch ( $filetype
       { 
          case 
    '2'
           
    $pic_filetype  '.jpg'
             break; 

          case 
    '3'
            
    $pic_filetype  '.png'
             break; 

          case 
    '1'

             
    $pic_filetype  '.gif'
             break; 
          default: 
             die(
    "Falsches Dateiformat. Nur JPEG, GIF oder PNG erlaubt!" ); 
       } 

       
    // -------------------------------- 

        // Generate filename 
       // -------------------------------- 

       
    srand ((double) microtime ()* 1000000 );    // for older than version 4.2.0 of PHP 

       
    do 
       { 
          
    $pic_filename  $Titel . "-" md5 ( uniqid ( rand ())) .  $pic_filetype
       } 
       while( 
    file_exists ( $path  $pic_filename ) ); 


       
    // -------------------------------- 
       // Move this file to upload directory 
       // -------------------------------- 

       
    $ini_val  = ( @ phpversion () >=  '4.0.0'  ) ?  'ini_get'  'get_cfg_var'

       if ( 
    $ini_val ( 'open_basedir' ) !=  '' 
       { 
          if ( @
    phpversion () <  '4.0.3' 
          { 
             die(
    "open_basedir is set and your PHP version does not allow move_uploaded_file<br /><br />Please contact your server admin" ); 
          } 

          
    $move_file  'move_uploaded_file'
       } 
       else 
       { 
          
    $move_file  'copy'
       } 

       
    $move_file ( $filetmp $path  $pic_filename ); 

       
    chmod ( $path  $pic_filename 0777 ); 


       
    // -------------------------------- 
       // Well, it's an image. Check its image size 
       // -------------------------------- 

       
    $pic_size  getimagesize ( $path  $pic_filename ); 

       
    $pic_width  $pic_size [ 0 ]; 
       
    $pic_height  $pic_size [ 1 ]; 


       
    // -------------------------------- 
       // This image is okay, we can cache its thumbnail now 
       // -------------------------------- 

       
    if( $pic_filetype  !=  '.gif'
       { 
          
    $gd_errored  FALSE

          switch (
    $pic_filetype
          { 
             case 
    '.jpg'
                
    $read_function  'imagecreatefromjpeg'
                break; 
             case 
    '.png'
                
    $read_function  'imagecreatefrompng'
                break; 
          } 

          
    $src  $read_function ( $path   $pic_filename ); 

          if (!
    $src
          { 
             
    $gd_errored  TRUE
             
    $pic_thumbnail  ''
          } 
          else if( (
    $pic_width  $config_thumb_width ) or ( $pic_height  $config_thumb_height ) ) 
          { 
             
    // Resize it 
             
    if ( $pic_width  $pic_height
             { 
                
    $thumbnail_width  $config_thumb_width
                
    $thumbnail_height  $config_thumb_width  * ( $pic_height / $pic_width ); 
             } 
             else 
             { 
                
    $thumbnail_height  $config_thumb_height
                
    $thumbnail_width  $config_thumb_height  * ( $pic_width / $pic_height ); 
             } 

             
    $thumbnail  imagecreatetruecolor ( $thumbnail_width $thumbnail_height ); 

             
    $resize_function  'imagecopyresampled'

             
    $resize_function ( $thumbnail $src 0 0 0 0 $thumbnail_width $thumbnail_height $pic_width $pic_height ); 
         

         }
         }
          else 
          { 
             
    $thumbnail  $src
          } 

          if (!
    $gd_errored
          { 
             
    $pic_thumbnail  $pic_filename

             
    // Write to disk 
             
    switch ( $pic_filetype
             { 
                case 
    '.jpg'
                  @ 
    imagejpeg ( $thumbnail $thumb_path  $pic_thumbnail $resizequality ); 
                   break; 
                case 
    '.png'
                   @
    imagepng ( $thumbnail $thumb_path  $pic_thumbnail ); 
                   break; 
             } 

            @ 
    chmod ( $thumb_path  $pic_thumbnail 0777 ); 

          } 
    // End IF $gd_errored 

       
    // End Thumbnail Cache 



      // -------------------------------------- 
      // OK lets resize the original picture 
      // -------------------------------------- 

      
    if( $pic_filetype  !=  '.gif'
      { 
        
    $gd_errored  FALSE

        switch (
    $pic_filetype
        { 
          case 
    '.jpg'
            
    $read_function  'imagecreatefromjpeg'
            break; 
          case 
    '.png'
            
    $read_function  'imagecreatefrompng'
            break; 
        } 

        
    $src  = @ $read_function ( $path   $pic_filename ); 

        if (!
    $src
        { 
          
    $gd_errored  TRUE
          
    $pic_resize  ''
        } 
        else if( (
    $pic_width  $config_width ) or ( $pic_height  $config_height ) ) 
        { 
          
    // Resize it 
          
    if ( (( $pic_width  $pic_height ) > ( $config_width  $config_height )) ) 
          { 
            
    $resize_width  $config_width
            
    $resize_height  $config_width  * ( $pic_height / $pic_width ); 
          } 
          else 
          { 
            
    $resize_height  $config_height
            
    $resize_width  $config_height  * ( $pic_width / $pic_height ); 
          } 

          
    $resize  = @ imagecreatetruecolor ( $resize_width $resize_height ); 

          
    $resize_function  'imagecopyresampled'

          
    $resize_function ( $resize $src 0 0 0 0 $resize_width $resize_height $pic_width $pic_height ); 
        } 
        else 
        { 
          
    $resize  $src
        } 

        if (!
    $gd_errored
        { 
          
    $pic_resize  $pic_filename

          
    // Write to disk 
          
    switch ( $pic_filetype
          { 
            case 
    '.jpg'
              
    imagejpeg ( $resize $path  $pic_resize $resizequality ); 
              break; 
            case 
    '.png'
              
    imagepng ( $resize $path  $pic_resize ); 
              break; 
          } 

          
    chmod ( $path  $pic_resize 0777 ); 


        } 
    // End IF $gd_errored 

      
    // End Picture Resize 

     
     
     


        



    --------

    jetzt habei ch ein weiteres Problem, irgendwie bricht er bei mir nach 150 Einträgen automatisch ab?(

    habe auch schon

    set_time_limit(200);

    gesetzt...
     
  6. 15. August 2010
    AW: CSV Problem!!!!

    PHP: imagedestroy - Manual
    PHP: Manual Quick Reference

    beides lesen und anschließend im script anwenden.
     
  7. 15. August 2010
    AW: CSV Problem!!!!

    hab das nun so gemacht:

    PHP:
    Code
    ...
          } 
    // End IF $gd_errored 

       
    // End Thumbnail Cache 

    imagedestroy  ( $thumbnail );


    Code
    ...
        } 
    // End IF $gd_errored 

      
    // End Picture Resize 

     
     
    imagedestroy  ( $resize );

    meintest du das so?

    und die set_time_limit (100);

    habe ich vor die While-Schleife gepackt.

    Das Problem besteht jedoch weiterhin!!!
     
  8. 17. August 2010
    AW: CSV Problem!!!!

    PHP:
    set_time_limit ( 0 );  // script läuft endlos weiter
    und $src musst auch mit imagedestroy ausm speicher entfernen

    brichts immer noch ab?
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.