php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.10.2006, 12:42  
Benutzer
 
Registriert seit: 02.07.2005
Beiträge: 39
betrazivis
Standard [curl] Größe unterschiedlich zum Original (copy() Problem)

Hallo
Ich habe ein Script, das mir Bilder von einem fremden Server holt und diese per GD verkleinert. Tut auch alles wunderbar, nur beim Umrechnen per GD bricht diese mit der Fehlermelung
Code:
Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file in /home/***/httpdocs/includes/functions.php on line 1127

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: 'tmp/curl/627002d_jfb.jpg' is not a valid JPEG file in /home/***/httpdocs/includes/functions.php on line 1127

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/***/httpdocs/includes/functions.php on line 1129

Fatal error: imagecreatefrompng() [function.imagecreatefrompng]: gd-png: fatal libpng error: invalid stored block lengths in /home/***/httpdocs/includes/functions.php on line 1135
Nun ist mir aufgefallen ,dass der Download der Datei, einige (Kilo)Bytes kleiner ist als das Original, was darauf schießen lässt dass das Bild nicht ganz rübergeschaufelt wurde. Im Browser wird dieses jedoch einwandfrei angezeigt.

Hier der (vereinfachte Beispiel)Code, der das Bild kopiert:

PHP-Code:
                $img_path 'tmp/curl/';
                
                
$file basename('/tmp/curl/test.jpg');
                
$fp   fopen($img_path.$file"w"); 

                
                
//get img
                
$handle curl_init();     
                
                
curl_setopt($handleCURLOPT_URL'http://domain.de/test.jpg');  
                
curl_setopt($handleCURLOPT_RETURNTRANSFER0);  
                
curl_setopt($handleCURLOPT_UPLOAD0);  
                
curl_setopt($handleCURLOPT_FILE$fp);
                
                
$result curl_exec($handle);
                
                
$info curl_getinfo ($handle);
                
curl_close($handle); 

///EDIT:

Ich habe festgestellt, dass es nicht an CURL liegen kann, sondern an der später aufgerufenen copy() Funktion. Diese verändert die Ursprungsdatei.
Ein Shellbefehl(cp -r) macht das gleiche. Ich werd noch bekoppt. Woran liegt das?
betrazivis ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.10.2006, 13:30  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

nimm nen texteditor und schau dir so ne file mal an ? vieleicht sieht man es direkt, kleiner ist komisch, größer hätte ich eher verstanden, weil curl seine header oder so noch irgendwo dazubastelt.

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 20.10.2006, 13:58  
Benutzer
 
Registriert seit: 02.07.2005
Beiträge: 39
betrazivis
Standard

Zitat:
Zitat von robo47
nimm nen texteditor und schau dir so ne file mal an ? vieleicht sieht man es direkt, kleiner ist komisch, größer hätte ich eher verstanden, weil curl seine header oder so noch irgendwo dazubastelt.
Ich seh da keinen Unterschied, kommt vielleicht daher, dass ich keine Maschine bin .
Also Dreamwaver sagt mir beim Aufruf eines solch kaputten Bildes "Premature End of Jpeg File". Irgendwas läuft da beim Kopieren schief
betrazivis ist offline   Mit Zitat antworten
Alt 20.10.2006, 16:59  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

mal was anderes als curl benutzt ?

file_get_contents ?
fopen in kombination mit fread / fwrite ?

imho finde ich curl ist da fast oversized.
robo47 ist offline   Mit Zitat antworten
Alt 20.10.2006, 17:10  
Benutzer
 
Registriert seit: 02.07.2005
Beiträge: 39
betrazivis
Standard

Zitat:
Zitat von robo47
mal was anderes als curl benutzt ?

file_get_contents ?
fopen in kombination mit fread / fwrite ?

imho finde ich curl ist da fast oversized.
nuja, kann sein. Ist aber einfach uns zuverlässig.

Ich habe festgestellt, dass es nicht an CURL liegen kann, sondern an der später aufgerufenen copy() Funktion. Diese verändert die Ursprungsdatei.
Ein Shellbefehl exec(cp -r) macht das gleiche???
betrazivis ist offline   Mit Zitat antworten
Alt 23.10.2006, 16:53  
Benutzer
 
Registriert seit: 02.07.2005
Beiträge: 39
betrazivis
Standard

Habe die Lösung gefunden und möchte sie euch nicht vorenthalten
Es war wieder mal sau einfach, hat mich aber wieder mal so manche Nervenzelle gekostet. Ich habe vergessen die Datei zu schließen. Und zwar nicht per curl_close($handle), sondern per fclose().

Das wars schon.

PHP-Code:
$img_path 'tmp/curl/';
                
                
$file basename('/tmp/curl/test.jpg');
                
$fp   fopen($img_path.$file"w");

                
                
//get img
                
$handle curl_init();     
                
                
curl_setopt($handleCURLOPT_URL'http://domain.de/test.jpg');  
                
curl_setopt($handleCURLOPT_RETURNTRANSFER0);  
                
curl_setopt($handleCURLOPT_UPLOAD0);  
                
curl_setopt($handleCURLOPT_FILE$fp);
                
                
$result curl_exec($handle);
                
                
$info curl_getinfo ($handle);
                
curl_close($handle);
                
                
// !
                
fclose($fp); 
betrazivis ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit copy() dimitri PHP Tipps 2006 1 15.03.2006 00:30
[Erledigt] Problem mit copy() PHP Tipps 2005-2 1 03.09.2005 20:23
Problem mit copy() PHP Tipps 2004-2 7 26.11.2004 19:01
Problem mit copy() und fwrite() pixelcut PHP-Fortgeschrittene 5 26.11.2004 15:58
problem mit copy() kid01 PHP Tipps 2004-2 4 17.11.2004 14:50
Problem mit dateiupload (copy) PHP-Fortgeschrittene 19 26.10.2004 11:51
[Erledigt] copy - Funktion bereitet Problem PHP-Fortgeschrittene 5 04.09.2004 22:54
Problem mit copy() rocco PHP Tipps 2004 3 25.08.2004 09:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
premature end of jpeg file, \premature end of jpeg file\, gimp premature end of jpeg file, premature end of jpg file, curl bild kopieren, php copy jpg, curl copy handle, mit curl seite rippen, curl copy, premature end of jpeg file in, dreamweaver premature end of jpeg file, invalid stored block lengths, curl größe von datei, curl_exec jpg, premature end of peg file, curl_exec größe, curl tmp jpg, curl probleme festgestellt: 7, premature end of jpeg php, dateigröße jpg php

Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.