WinFuture-Forum.de: [php] Vorschaubilder - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[php] Vorschaubilder


#1 Mitglied ist offline   dblay 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.246
  • Beigetreten: 18. März 07
  • Reputation: 1

  geschrieben 25. Juli 2007 - 16:17

Hallo Leute!

Ich hab hier ein kleines Script, welches ein Foto (JPG) einliest und ein entsprechendes Vorschaubild wieder ausgibt.

 1: <?php
 2: 	
 3: 	if(isset($_GET['url']) and file_exists($_GET['url'])) {
 4: 		$img_info = getimagesize($_GET['url']);
 5: 		if($img_info[0] and $img_info[1] and $img_info[2] == 2) {
 6: 			$height = 100;
 7: 			$width = round($img_info[0] * ($height / $img_info[1]), 0);
 8: 			$img_stream = imagecreatetruecolor($width, $height);
 9: 			$img_original = imagecreatefromjpeg($_GET['url']);
10: 			
11: 			imagecopyresampled($img_stream, $img_original, 0, 0, 0, 0, $width, $height, $img_info[0], $img_info[1]);
12: 			imagedestroy($img_original);
13: 		}
14: 	} else {
15: 		$img_stream = imagecreatefromjpeg('../images/prev_error.jpg');
16: 	}
17: 	
18: 	header('Content-type: image/jpeg');
19: 	imagejpeg($img_stream);
20: 	imagedestroy($img_stream);
21: 	
22: ?>


Nu ist das Problem, sobald man als Bild wirklich ein Foto übergibt (und nicht nur eine kleine Beispiel-Grafik von so 500 x 300px), dann kommt das hier:

Zitat

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 9212 bytes) in E:\xampplite\htdocs\scripts\preview.php on line 9


Was mir natürlich wenig bringt, wenn ich die Bilder schon selber vorher kleiner machen muss, damit er sie überhaupt verarbeitet!!!

Ich habe mich schon bei php.net etc. informiert, und demnach sollte es theoretisch auch so gehen, aber in der Praxis sieht man ja, was dabei raus kommt.

Hat also jemand von euch ne Ahnung, was da falsch läuft, bzw. wo der Fehler liegt?
Würde mich sehr über Vorschläge freuen.

Viele Grüße, dblay
Zeit ist, was verhindert, dass alles gleichzeitig passiert.
0

Anzeige



#2 Mitglied ist offline   tobiasndw 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.815
  • Beigetreten: 24. September 03
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 25. Juli 2007 - 16:22

Welche Auflösung und welche Dateigröße haben denn die Bilder?

Weil irgendwann ist es einfach zu viel und es kann nicht mehr verarbeitet werden.

Dieser Beitrag wurde von tobiasndw bearbeitet: 25. Juli 2007 - 16:22

0

#3 Mitglied ist offline   dblay 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.246
  • Beigetreten: 18. März 07
  • Reputation: 1

geschrieben 25. Juli 2007 - 17:44

die fotos sind ganz normal mit 3-5 megapixel, dateigröße rund 1-2 mb. ist halt für ne foto-galerie. und es wird ja auch immer nur eins mit einem mal bearbeitet.

ist mir an sich rätselhaft ... wobei, ich hab ja fast den verdacht, wenn er das intern als bitmap umrechnet, dann wird's auch schon mal größer als die in der fehlermeldung erwähnten 16 mb ...

na ja, notfalls muss ich ihm dann mehr speicher zuweisen, lässt sich ja konfigurieren, glaub ich.

edit: wobei ... ich hab das nochmal probiert, z.t. macht er auch schon bei bildern schlapp, die so 1000x700 sind ... das kann doch echt nicht sein!

Dieser Beitrag wurde von dblay bearbeitet: 25. Juli 2007 - 17:47

Zeit ist, was verhindert, dass alles gleichzeitig passiert.
0

#4 Mitglied ist offline   ph030 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.130
  • Beigetreten: 14. Juli 04
  • Reputation: 36
  • Geschlecht:unbekannt

geschrieben 25. Juli 2007 - 18:39

Ist das dein eigener Server? Wenn ja, änder die Settings in der php.ini bezüglich Max.Upload, Scriptlaufzeit, etc. pp
0

#5 Mitglied ist offline   NightTiger 

  • Gruppe: aktive Mitglieder
  • Beiträge: 701
  • Beigetreten: 19. März 06
  • Reputation: 0
  • Wohnort:Bern
  • Interessen:Webdesign -&gt; (X)HTML, CSS, ein bisschen PHP und ein bisschen JavaScript ;))

geschrieben 26. Juli 2007 - 02:49

Die Meldung gibt an, dass die erlaubte Dateigrösse von 16MB überschritten sei. Irgendwie ist das merkwürdig, wenn die Datei wirklich nur 1-2MB gross ist..

Die php.ini zu ändern wäre eine Möglichkeit, finde ich aber nicht so toll, da wahrscheinlich Performance-Einbussen vorhanden sind, wenn so viele MBs geladen werden müssen, obwohl die Datei nur 1-2MB gross ist. Man sollte also rausfinden, wieso der 16MB überschreitet! Da hab ich aber leider auch keine Ahnung.. :/
0

#6 Mitglied ist offline   dblay 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.246
  • Beigetreten: 18. März 07
  • Reputation: 1

geschrieben 26. Juli 2007 - 10:27

@ph030: joa, das könnt ich sicherlich machen, der maximale speicher ließe sich ja für das entsprechende skript per ini_set erhöhen. aber das würde das problem an sich - wie NightTiger schon sagt - auch nicht beheben.

was mich auch wundert, ist der umstand, dass er sagt, "der speicher von 16mb wurde verbraucht (versuchte 9kb zuzuweisen)" ... hä? seit wann sind denn 9kb größer als 16mb? oder meint er damit, dass es 9kb zuviel sind? (was da so nicht steht)

schon komisch das alles ... na ja, jedenfalls erstmal danke für eure antworten. :)
Zeit ist, was verhindert, dass alles gleichzeitig passiert.
0

#7 Mitglied ist offline   amalbhalbe 

  • Gruppe: aktive Mitglieder
  • Beiträge: 643
  • Beigetreten: 14. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:BMW E38 740i V8 286 PS 4.4L Hubraum
  • Interessen:Design is the production of braindysentery

geschrieben 26. Juli 2007 - 17:40

kann auch leicht möglich sein das der Umrechungsprozess einfach ie Datei zu weit aufblässt während dem umrechen .. was passiert wenn du testweise mal ne 500 kb datei nimmst? ( kann man ja gegbenenfalls via gimp, photoshop zusammen hexeln ) ?

ich hatte das problem damals auch
Pc is my life, amd my world, intel my enemy and Linux my Hell
0

#8 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 26. Juli 2007 - 22:20

Beitrag anzeigenZitat (amalbhalbe: 26.07.2007, 18:40)

kann auch leicht möglich sein das der Umrechungsprozess einfach ie Datei zu weit aufblässt während dem umrechen .. was passiert wenn du testweise mal ne 500 kb datei nimmst? ( kann man ja gegbenenfalls via gimp, photoshop zusammen hexeln ) ?

ich hatte das problem damals auch


Ja genau das "Aufblasen" ist das Problem. Hier mal ein Zitat von der php-Manual Seite zu imagecopyresampled.

Zitat

Be wary of this function when resizing images to make them *larger* than the original due to the memory consumption rate. For example a 200KB JPEG file (1024x768) will take up 4MB of memory when loaded, but when resampled to twice the the size the memory use jumps to 20.1MB. imagecopyresized does the same. Allow approx. 5 bytes per *pixel* for memory allowance when dealing with true colour images.


D.h. ein Bild mit z.B. 2560x1920 Pixel hat also 4915200 Pixel (5 MP). Das mal 5 Byte sind ca. 23,4 MB.
In deinem Fehler ist die Rede von 16777216 Byte was genau 16 MB sind, was nach der vorgehenden Rechnung nicht ausreicht. Also muss der Speicher wohl leider doch erhöht werden.

Gruß,
Stefan
0

#9 Mitglied ist offline   dblay 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.246
  • Beigetreten: 18. März 07
  • Reputation: 1

geschrieben 27. Juli 2007 - 09:47

oh oh, ich habs befürchtet .... na ja, zumindest liegt der fehler nicht am skript :D vielen dank für die info!!

und vielen dank auch noch mal an alle anderen!!

Dieser Beitrag wurde von dblay bearbeitet: 27. Juli 2007 - 09:48

Zeit ist, was verhindert, dass alles gleichzeitig passiert.
0

Thema verteilen:


Seite 1 von 1

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