File Upload, imagecreate - maximale speichergröße

Hallo,
Ich bin beim FileUpload auf ein Problem gestoßen. Ich hab ein relativ großes Bild versucht hochzuladen und bekomme dabei diese Meldung:

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 9876 bytes) in class.cContent.php on line 249

Zeile 249 sieht dabei so aus:

$b = imagecreatefromjpeg( $_FILES[‚pic‘][‚tmp_name‘] );

Da das Bild verkleinert werden muss, reicht es nicht, ein hochgeladenes Bild einfach in den entsprechenden Ordner zu kopieren. Ich hab mich im Internet informiert, dass die memory size der Einstellung memory_limit entspricht weiß ich, aber die is mit 32MB ja eh ganz ok, oder? Ich möchte nun verhindern, dass User zu große Bilder hochladen und damit diese Meldung gar nicht erst kriegen. Nur weiß ich nicht, wie ich ausrechnen kann, wieviel Platz so ein Bild im Speicher tatsächlich belegt. Google lieferte mir die Rechnung breite x höhe x farbtiefe. Wäre im Fall des Bildes, mit dem ich getestet habe:

2469 x 3508 x 24 = 207870048 und das is größer als 33554432

Gleichzeitig hab ich aber noch ein zweites Bild mit

1600 x 1448 x 24 = 55603200

was ja auch größer als 33554432 is. DAS Bild lässt sich aber ohne Fehlermeldung hochladen. Also nehme ich an, dass die Rechnung nicht stimmt. Wie berechne ich also, wieviel Platz ein Bild im Speicher beansprucht?

Danke im Voraus,
Chi

ich würde an Deiner Stelle gleich mal die maximale Dateigröße beschränken…
Oder willst Du wirklich, dass Leute 30 MB Files hochladen könnten?

http://roshanbh.com.np/2008/01/uploading-larger-file…

alternativ in php die Dateigrösse checken und vorher abbrechen mit der Meldung, dass die Datei zu groß ist…

Vielleicht hab ich mich unklar ausgedrückt … wie ich die Dateigröße dann beschränke ist mir schon klar. Wenns der Server erlauben würde, würde ich die Leute auch 30MB Files hochladen lassen, ja. Die Beschränkung soll einzig dazu dienen zu verhindern, dass der Kunde beim Hochladen die „allowed disk size exhausted“ Meldung kriegt. Ich versuche rauszufinden, wieviel speicher ein Bild belegt, wenn es mit imagecreatedfromjpeg verarbeitet wird.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Nur weiß ich nicht, wie
ich ausrechnen kann, wieviel Platz so ein Bild im Speicher
tatsächlich belegt. Google lieferte mir die Rechnung breite x
höhe x farbtiefe. Wäre im Fall des Bildes, mit dem ich
getestet habe:

2469 x 3508 x 24 = 207870048 und das is größer als 33554432

links rechnest du bit - das limit sind aber byte…

Gleichzeitig hab ich aber noch ein zweites Bild mit

1600 x 1448 x 24 = 55603200

was ja auch größer als 33554432 is. DAS Bild lässt sich aber
ohne Fehlermeldung hochladen.

55603200bit / 8 = 6950400byte