WinFuture-Forum.de: Imagecreatefromjpeg Funktioniert Nicht Richtig - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Imagecreatefromjpeg Funktioniert Nicht Richtig


#1 Mitglied ist offline   inspire1989 

  • Gruppe: Mitglieder
  • Beiträge: 20
  • Beigetreten: 14. August 08
  • Reputation: 0

geschrieben 25. März 2009 - 21:14

Hallo,

mit einer Funktion möchte ich Bilder verkleinern, doch das funktioniert aus irgendeinem Grund nicht - doch den Fehler finde ich leider nicht.

Die Funktion sieht so aus:

<?php
function to_thumbnail($bild)
{ 
	$file = getimagesize($bild); 
	if($file[2] == 1) 
	{
		$altesBild = imagecreatefromgif($bild); 
	}
	elseif($file[2] == 2) 
	{
		$altesBild = imagecreatefromjpeg($bild); 
	}
	
	$breite = $file[0]; 
	$hoehe = $file[1]; 
	$neueBreite1 = 800; 
	$neueHoehe1 = intval($hoehe * $neueBreite1 / $breite); 
	
	if($breite > $neueBreite1)
	{
		if($file[2] == 1) 
		{ 
			# GIF 
			chmod("bildergalerie/".$_POST["id"]."/", 0777);
			$neuesBild = imagecreatetruecolor($neueBreite1, $neueHoehe1); 
			imagecopyresampled($neuesBild, $altesBild, 0, 0, 0, 0, $neueBreite1, $neueHoehe1, $breite, $hoehe); 
			imagegif($neuesBild, "bildergalerie/".$_POST["id"]."/".$bild);
		} 
		
		if($file[2] == 2) 
		{ 
			# JPG
			chmod("bildergalerie/".$_POST["id"]."/", 0777);
			$neuesBild = imagecreatetruecolor($neueBreite1, $neueHoehe1); 
			imagecopyresampled($neuesBild, $altesBild, 0, 0, 0, 0, $neueBreite1, $neueHoehe1, $breite, $hoehe); 
			imagejpeg($neuesBild, "bildergalerie/".$_POST["id"]."/".$bild);
		} 
	} else
	{
		if($file[2] == 1) 
		{ 
			# GIF 
			chmod("bildergalerie/".$_POST["id"]."/", 0777);
			$neuesBild = imagecreatetruecolor($neueBreite1, $neueHoehe1); 
			imagecopyresampled($neuesBild, $altesBild, 0, 0, 0, 0, $breite, $hoehe, $breite, $hoehe); 
			imagegif($neuesBild, "bildergalerie/".$_POST["id"]."/".$bild);
		} 
		
		if($file[2] == 2) 
		{ 
			# JPG
			chmod("bildergalerie/".$_POST["id"]."/", 0777);
			$neuesBild = imagecreatetruecolor($neueBreite1, $neueHoehe1); 
			imagecopyresampled($neuesBild, $altesBild, 0, 0, 0, 0, $breite, $hoehe, $breite, $hoehe); 
			imagejpeg($neuesBild, "bildergalerie/".$_POST["id"]."/".$bild);
		} 
	}
}
?>


Ich habe herausgefunden, dass das Script bereits bei imagecreatefromjpeg hängen bleibt. Allerdings nur bei großen Dateien, bei kleinen funktioniert alles wunderbar. Es kommt keine Fehlermeldung und es wird keine Datei gespeichert. Woran liegt das?

(ich habe bisland nur den Upload von JPG-Dateien ausprobiert, da mir das wichtiger ist :) )

Könnt ihr mir helfen?

Gruß
Martin

Dieser Beitrag wurde von inspire1989 bearbeitet: 25. März 2009 - 21:15

0

Anzeige



#2 Mitglied ist offline   Wiesel 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.932
  • Beigetreten: 09. Mai 06
  • Reputation: 525
  • Geschlecht:unbekannt
  • Wohnort:Punxsutawney, 742 Evergreen Terrace
  • Interessen:Mein Schneckenhaus

geschrieben 25. März 2009 - 21:26

Wenn das ganze bei kleinen Dateien funktioniert kann es durchaus möglich sein dass der Server (oder PHP) so eingestellt ist dass Scripte eine gewisse Laufzeit oder RAM nicht überschreiten dürfen.

greets
around the world
0

#3 Mitglied ist offline   h-a-n-n-e-s 

  • Gruppe: aktive Mitglieder
  • Beiträge: 823
  • Beigetreten: 11. August 06
  • Reputation: 1

geschrieben 26. März 2009 - 14:30

Ich glaube das liegt an der "max_input_time", wenn ich es hier richtig gelesen habe.

Weiter unten hat jemand geschrieben:

Zitat

This sets the maximum time in seconds a script is allowed to parse input data, like POST, GET and file uploads.

Eingefügtes Bild
0

#4 Mitglied ist offline   inspire1989 

  • Gruppe: Mitglieder
  • Beiträge: 20
  • Beigetreten: 14. August 08
  • Reputation: 0

geschrieben 26. März 2009 - 17:58

Danke für eure Tipps!
ini_set() hat für die Befehle keine Lösung gebracht, ebenso htaccess nicht. Und auf die php.ini habe ich keinen Zugriff...eine andere Möglichkeit gibt es nicht, oder?

Gruß
Martin
0

#5 Mitglied ist offline   asko 

  • Gruppe: aktive Mitglieder
  • Beiträge: 144
  • Beigetreten: 17. November 02
  • Reputation: 0

geschrieben 29. März 2009 - 20:46

Hallo,

Du solltest mal ganz oben error_reporting( E_ALL ); in's Script schreiben, damit Fehler ausgegeben werden.
Eine mögliche, sogar sehr wahrscheinliche Fehlerquelle ist zu wenig verfügbarer RAM, was besonders bei Mietwebspace der Fall sein kann. Nicht selten hat man bei Massenhoster nur 8MB oder weniger zur Verfügung und das reicht dann nicht aus für Bildbearbeitung. JPEG ist ein stark komprimiertes Bildformat, dass zur Bearbeitung "dekomprimiert" wird. So kann es ganz schnell sein kann, dass ein komprimiertes JPG mit z.B. 70KB dann dekomprimiert fast 1MB groß wird. Dazu kommt noch, dass zur Bildbearbeitung als Faustregel ca. das 3-fache bis 4-fache der dekomprimierten Dateigröße an RAM benötigt wird. Da stößt man sehr schnell an Grenzen, wenn man mit Bilder in gängigen DigiCam Größen arbeitet.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0