Problem mit Bilduploadscript....

MelcomB56

Mitglied
Halle Community,

ich habe mir ein script geschrieben das normalerweise bilder beim upload bearbeitet via gd2. hat bislang auch alles super geklappt, bis mein provider auf das neue php umgestellt hat.

Hier erstmal der code von dem script, zu mindest das wichtigste:

PHP:
if(strlen($datei) < 1)
{
	echo "Es wurde kein Bild angegeben";
}
else
{
	if ($HTTP_POST_FILES['datei']['type'] == "image/png")
	{
		$name = ".png";
		$dateiname=$timestamp.$name;
	
		copy($datei, $pfad.$dateiname);
		
		$im = ImageCreateFromPNG($pfad.$dateiname);
		$width = ImageSX($im);
		$height = ImageSY($im);
	
		if ($width > $height & $width > 300) {
		//Querformat
		$twidth = 300;
		$faktor = ($twidth / $width);
		$theight = $height * $faktor;
		}
		elseif ($width <= $height & $height > 300) {
		//Hochformat
		$theight = 300;
		$faktor = ($theight / $height);
		$twidth = $width * $faktor;
		}
		else {
		$twidth = $width;
		$theight = $height;
		}
	
		$im2 = imagecreatetruecolor($twidth,$theight);
		ImageCopyResized($im2,$im,0,0,0,0,$twidth,$theight,$width,$height);
		ImagePNG($im2,$pfad.$dateiname,100);		
	}
	else If ($HTTP_POST_FILES['datei']['type'] == "image/gif")
	{
		$name = ".gif";
		$dateiname=$timestamp.$name;
				
		copy($datei, $pfad.$dateiname);

		$im = ImageCreateFromGIF($pfad.$dateiname);
		$width = ImageSX($im);
		$height = ImageSY($im);
				
		if ($width > $height & $width > 300) {
		//Querformat
		$twidth = 300;
		$faktor = ($twidth / $width);
		$theight = $height * $faktor;
		}
		elseif ($width <= $height & $height > 300) {
		//Hochformat
		$theight = 300;
		$faktor = ($theight / $height);
		$twidth = $width * $faktor;
		}
		else {
		$twidth = $width;
		$theight = $height;
		}
						
		$im2 = ImageCreate($twidth,$theight);
		ImageCopyResized($im2,$im,0,0,0,0,$twidth,$theight,$width,$height);
		ImageGif($im2,$pfad.$dateiname,100);
	}
	else If ($HTTP_POST_FILES['datei']['type'] == "image/jpeg")
	{
		$name = ".jpg";
		$dateiname=$timestamp.$name;	
									
		copy($datei, $pfad.$dateiname);
								
		$im = ImageCreateFromJPEG($pfad.$dateiname);
		$width = ImageSX($im);
		$height = ImageSY($im);
				
		if ($width > $height & $width > 300) {
		//Querformat
		$twidth = 300;
		$faktor = ($twidth / $width);
		$theight = $height * $faktor;
		}
		elseif ($width <= $height & $height > 300) {
		//Hochformat
		$theight = 300;
		$faktor = ($theight / $height);
		$twidth = $width * $faktor;
		}
		else {
		$twidth = $width;
		$theight = $height;
		}
						
		$im2 = imagecreatetruecolor($twidth,$theight);
		ImageCopyResized($im2,$im,0,0,0,0,$twidth,$theight,$width,$height);
		ImageJpeg($im2,$pfad.$dateiname,100);
		}
		else
		{
			echo "Dieser Bildtyp wird nicht unterstüzt";
		}

Wenn ich nun also ein Bild uppen will bekomme ich immer die meldung:

" Dieser Bildtyp wird nicht unterstüzt "

Kann mir vieleicht einer erklären warum er das macht Ist am script nun irgend was falsch was ich übersehe ?

LG

Melcom
 
Hallo!

Änder mal $HTTP_POST_FILES in $_FILES.

Im übrigen kann ein JPEG auch vom Typ image/pjpeg sein. (nur so als kleiner Tip/Hinweis)

Gruss Dr. Dau
 
Hallo,

habe das ganze nun so abgeändert:

PHP:
if(strlen($datei) < 1)
{
	echo "Es wurde kein Bild angegeben";
}
else
{
	if ($_FILES['datei']['type'] == "image/png")
	{
		$name = ".png";
		$dateiname=$timestamp.$name;
	
		copy($datei, $pfad.$dateiname);
		
		$im = ImageCreateFromPNG($pfad.$dateiname);
		$width = ImageSX($im);
		$height = ImageSY($im);
	
		if ($width > $height & $width > 300) {
		//Querformat
		$twidth = 300;
		$faktor = ($twidth / $width);
		$theight = $height * $faktor;
		}
		elseif ($width <= $height & $height > 300) {
		//Hochformat
		$theight = 300;
		$faktor = ($theight / $height);
		$twidth = $width * $faktor;
		}
		else {
		$twidth = $width;
		$theight = $height;
		}
	
		$im2 = imagecreatetruecolor($twidth,$theight);
		ImageCopyResized($im2,$im,0,0,0,0,$twidth,$theight,$width,$height);
		ImagePNG($im2,$pfad.$dateiname,100);		
	}
	else If ($_FILES['datei']['type'] == "image/gif")
	{
		$name = ".gif";
		$dateiname=$timestamp.$name;
				
		copy($datei, $pfad.$dateiname);

		$im = ImageCreateFromGIF($pfad.$dateiname);
		$width = ImageSX($im);
		$height = ImageSY($im);
				
		if ($width > $height & $width > 300) {
		//Querformat
		$twidth = 300;
		$faktor = ($twidth / $width);
		$theight = $height * $faktor;
		}
		elseif ($width <= $height & $height > 300) {
		//Hochformat
		$theight = 300;
		$faktor = ($theight / $height);
		$twidth = $width * $faktor;
		}
		else {
		$twidth = $width;
		$theight = $height;
		}
						
		$im2 = ImageCreate($twidth,$theight);
		ImageCopyResized($im2,$im,0,0,0,0,$twidth,$theight,$width,$height);
		ImageGif($im2,$pfad.$dateiname,100);
	}
	else If ($_FILES['datei']['type'] == "image/jpeg" OR $_FILES['datei']['type'] == "image/qjpeg")
	{
		$name = ".jpg";
		$dateiname=$timestamp.$name;	
									
		copy($datei, $pfad.$dateiname);
								
		$im = ImageCreateFromJPEG($pfad.$dateiname);
		$width = ImageSX($im);
		$height = ImageSY($im);
				
		if ($width > $height & $width > 300) {
		//Querformat
		$twidth = 300;
		$faktor = ($twidth / $width);
		$theight = $height * $faktor;
		}
		elseif ($width <= $height & $height > 300) {
		//Hochformat
		$theight = 300;
		$faktor = ($theight / $height);
		$twidth = $width * $faktor;
		}
		else {
		$twidth = $width;
		$theight = $height;
		}
						
		$im2 = imagecreatetruecolor($twidth,$theight);
		ImageCopyResized($im2,$im,0,0,0,0,$twidth,$theight,$width,$height);
		ImageJpeg($im2,$pfad.$dateiname,100);
		}
		else
		{
			echo "Dieser Bildtyp wird nicht unterstüzt";
		}
	}

Wenn ich nun ein upload mache bekomme ich folgende fehlermeldung:

Warning: imagepng(): gd-png: fatal libpng error: zlib failed to initialize compressor in... Warning: imagepng(): gd-png error: setjmp returns error condition in...

nun bin ich total verwirrt ^^

das ganze scheint sich aber nur auf :

PHP:
		$im2 = imagecreatetruecolor($twidth,$theight);
		ImageCopyResized($im2,$im,0,0,0,0,$twidth,$theight,$width,$height);
		ImagePNG($im2,$pfad.$dateiname,100);

zu beschränken... hat das was mit der PNG-geschichte zu tun ?

Greetings

Melcom
 
Zuletzt bearbeitet:
Hey,

dickes dickes danke für deine Hilfe. Nun klappt es wieder wunderbar, so wie es soll.

Aber, hat sich das denn mit der neuen php version gändert das man da nur 2 angaben machen kann ? Vorher hat es ja auch geklappt ?

Grüsse

Melcom
 
Also wenn es mal anders gewesen sein soll, dann muss es aber schon einige Jahre zurückliegen.
Lediglich ImageJPEG() sieht eine Kompressionsstufe vor (hier ist "85" aber vollkommen ausreichend).
Oder anders ausgedrückt: bei ImageGIF() hast Du auch eine Angabe zuviel. :p

Dass Du vorher kein "Warning:....." bekommen hast, könnte z.B. daran gelegen haben dass "E_WARNING" deaktiviert wurde (lässt sich z.B. in der php.ini einstellen).

Im übrigen heisst der Mime-Type nicht image/qjpeg sondern image/pjpeg. ;)
 
Hi,

danke für die Tipps, habe ich aber auch schon bemerkt *g*. Da hat sich wohl der *achtung nun kommt ein böses wort* COPY&PASTE-TEUFEL eingeschlichen :D.

Nun läuft das alles wie geschmiert. Danke dir nochmal und ich wünsche dir & euch ein frohes und besinnliches Weihnachtsfest.

Und, einen guten Rutsch ins Jahr 2009.


LG

Melcom

[CLOSE]
 
Zurück