Bilder skalieren / memory / Alternativen?

Hallo liebe Gemeinschaft,

ich habe bei dem naiven Versuch eine Seite mit Bildupload für Fotos (ca 5MB) von Digitalkameras einen Fehler bekommen, beim Skalieren zu 800x600px:

Memory: 824216(824304) Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 19584 bytes) in /users/xxx/www/XXX.php on line 54

Jetzt habe ich ein bisschen gegooglt und in Foren gelesen und bin jetzt zwar schlauer als vorher aber habe noch keine Lösung.
(Bitte nicht sofort antworten, sondern bis zum Ende lesen wo die eigentliche Frage kommt)

Details:

  • imagecreatefromjpeg() löst den Fehler aus beim Komprimieren eines JPG (4,32 MB, 3672x4896Pixel) zu 800x600px
  • Memory Leak tritt auf beim “entkomprimieren” des jpg (Pixel, farbkanal, usw), ok
  • Offline vorher verkleinern ist keine Alternative
  • Scripts auszuführen einschlägiger Programme (zB Imagick?) die hier helfen ev. könnten (kanns ja nicht testen) ist wohl serverseitig verboten (verständlich)

Nun meine Frage:Gibt es eine Alternative die ich nicht bedacht habe, wie ich das trotzdem lösen könnte?
Ich will: Dem User ein Portal zur Verfügung stellen wo er aktuell gängige Kamerabilder (5-6MB)( hochladen kann (ohne sie vorher verkleinern zu müssen) um sie dann skaliert am Server zu speichern (wegen schneller Ladezeiten in Galerie und natürlich Speichernutzung am Server)

Meine Ideen:

  • Das Problem haben ja mehrere User im Forum, ev wurde von den bplaced Administratoren bereits ein “sicheres” Script für solche Zwecke zu Verfügung gestellt?
  • Gibt es einen Online Dienst dem ich mein Bild schicke (supertool.com/resize.php?siz … toobig.jpg) und auch wieder skaliert zurück bekomme?

DANKE für alle Hinweise!

Liebe Grüße,

Naperville
(ich entschuldige mich im Vorhinein sollte ich gängige Forenregeln verletzt haben, das ist alles Neuland für mich)

ich denke, das du so etwas meinst?

code.google.com/p/imageshackapi/

Einige Galerien haben einen Java-Uploader, der die Bilder automatisch schon auf dem Client skaliert und erst dann an den Server überträgt.
Das sollte Dein Problem lösen, ohne die User zu sehr zu belasten.

PHP Imagick/ImageMagick kann die Größe eines JPG Bildes während des Ladens ändern und somit, im Gegensatz zu GD, deutlich Ressourcen sparen.
Bedauerlicherweise glaube ich nicht, dass Imagick hier auf bplaced verfügbar ist, d.h. es gibt keine vernünftige Lösung für dein Problem.

Evt. kann man auch mittels JavaScript das Bild vor dem Updload verändern. Vorraussetzung ist aber ein aktueller Browser, der das canvas Element unterstützt wie es scheint:
stackoverflow.com/questions/2434 … the-server

mfg Balmung

Als Java-Anhänger gefällt mir "lemacl"s Idee, aber ich selbst blockiere Java-Applets (egtl alles außer html-Tags), muss man dann halt einmal akzeptieren.

Nein ImageMagick ist nicht aktiv, siehe phpinfo.bplaced.net; aber deine zweite Idee ist gradios, finde ich. Danke, super Idee. Also ich bin nicht der Fragende, aber habe aufmerksam mitgelesen, denn ich bin bei der Erstellung eines Systems, das möglichst viel auf dem PC des Nutzers auslagert, damit man nicht so viel über AJAX oder so nachladen muss und der Server nicht so viel wie bei Joomla und anderen Systemen arbeiten muss.