URL: https://www.overclockers.at/coding-stuff/php_error_quotmemory_exhaustedquot_188301/page_1 - zur Vollversion wechseln!
hallo leute!
da mich heute wieder mal das coding-fieber gepackt hat, hab ich ein kleines script geschrieben mit dem es möglich sein soll bilder in der größe und im format zu verändern.
funz nach ein paar stunden arbeit eigentlich auch schon ganz gut nur bin ich jetzt auf ein kleines prob gestoßen:
wenn der user ein großes bild hochlädt (ca 1000x1000 px) und das dann noch auf 200%+ vergrößern will bekomm ich folgende fehlermeldung des servers (lokal-testserver):
ZitatFatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 11280 bytes) in C:\Programme\xampp\htdocs\efoto2\bildbearbeitung_inc.php on line 85
Code: PHP$x=floor($x*$_POST['prozangabe']/100); $y=floor($y*$_POST['prozangabe']/100); $pic = imagecreatetruecolor($x,$y);
Code: PHP$x=floor($x*$_POST['prozangabe']/100); $y=floor($y*$_POST['prozangabe']/100); try { $pic = imagecreatetruecolor($x,$y); } catch(Exception $e) { echo($e->getMessage()); }
lies die max filesize aus (php.ini), vergleich sie mit der filesize (bild), und erst dann wende die resize funktion an.
http://de2.php.net/ini_get
die vom ausgangsbild ist ok
ich kann das bild ja z.b. auf das 1.5 fache vergrößern
oder nur drehen....o.ä.
aber wenn ich es zu groß vergrößern will (und im php code dafür zu viel mem. angefordert würde) das script also mehr arbeitsspeicher anfordert als das memlimit ist bekomm ich den fehler.
schon überlegt eventuell derartige veränderungen an ein externes prog wie imagemagick zu übergeben?
ich wills ja als web-page machen - auf meinem image-hosting server laufen lassen und da kommts mir mit php sehr gelegen.
auf vielen webspace ist mittlerweile imagemagick standardmäßig installiert.
danke für die infos... aber auf meinem webserver gibts kein imagemagick!
kennt sich niemand mit exceptions in php aus?
das kommt ja aufs selbe raus. du rechnest einfach vor wie groß die vergrößerte datei is, und vergleichst mit dem maxwert
ja das hab ich mir auch schon gedacht... aber so einfach ist das nicht...
denn es steht nicht immer der gesamte speicher zur verfügung da schon speicher für den skriptteil vor der bildvergrößerung belegt ist. ich also nicht genau weiß wie viel ich noch habe - bzw. das von bild zu bild (-art jpg,gif,png,...) unterschiedlich ist.
und man kann ja auch (besonders bei jpgs) nicht fix sagen:
x*y = pixelanzahl * hausnummer bits = filesize. afaik.
Zitat von malukennt sich niemand mit exceptions in php aus?
Code:move_uploaded_file(..., $dorthin); $result = file_get_contents("http://meine-domain/rescale/?identifier=fuerdasbild"); $result auswerten
hey danke rekt für die infos!
werds mal so versuchen... aber du hast recht... echt sauber ist das auch nicht...
shit jetzt hätt ich mich schon so auf die exception-lösung gefreut! *g*
naja sonst muss ichs wirklich mit einer art "speicher-verbrauchs-abschätzung" machen.
muss mal schaun ob ich was finde wie man halbwegs genau den (arbeits)speicherverbrauch eines jpg,gif oder pngs berechnen kann.
thx mlu
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025