#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 ); } + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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ß + Multi-Zitat Zitieren
#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... + Multi-Zitat Zitieren
#6 15. August 2010 AW: CSV Problem!!!! PHP: imagedestroy - Manual PHP: Manual Quick Reference beides lesen und anschließend im script anwenden. + Multi-Zitat Zitieren
#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!!! + Multi-Zitat Zitieren
#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? + Multi-Zitat Zitieren