das ist ein bekanntes problem und hängt damit zusammen, dass die bildverkleinerung im gleichen request erfolgt, wie der upload, respektive die anzeige. auch wenn die bildverkleinerung in einem separaten request erfolgt, würde die skalierung fehlschlagen. aber der upload würde mindestens funktionieren. ein ähnliches problem kann auftreten, wenn mit ftp eine grosse anzahl bilder geladen wird und es zu einem abbruch aufgrund der laufzeitbegenzung kommt.
das andere problem ist eines der gdlib, wie du richtig festgestellt hast. das bild liegt zunächst komprimiert vor und deshalb ist es scheinbar klein (aus perspektive des datenvolumens). um es allerdings bearbeiten zu können, muss das bild in eine nicht-komprimierte rastergraphik umgewandelt werden. und dabei spielen einzig die bilddimensionen eine rolle sowie die farbtiefe, die das bild hat. bei imagemagick sollte das problem nicht auftreten. aber das haben halt nicht alle vorliegen.
idealerweise würde nun contenido zunächst die bildmasse sowie den maximal verfügbaren speicher ermitteln und die skalierung nur vornehmen, wenn diese auch durchführbar ist. das lässt sich zur laufzeit ohne weiteres ermitteln. ausserdem kann bei der erstellung insbesondere von kleinen thumbnails die farbtiefe auf 256 reduziert werden, was den speicherbedarf verringern wird. und, last not least, sollte der arbeitesspeicher nach dem rendering wieder freigegeben werden. das ist zwar möglicherweise aktuell schon der fall, aber sicher bin ich mir da nicht. an dieser stelle wären dann die entwickler gefragt. ist ja wie gesagt ein schon jahrelang bestehendes problem. also kurz:
- bildskalierung erst beim anfragen des bildes vornehmen.
- bildskalierung nur durchführen, wenn dies aufgrund des verfügbaren speichers auch tatsächlich möglich ist.
- reicht der speicher für die eine true-color-graphik nicht aus, die farbtiefe auf 256 farben reduzieren. geht auch das nicht, eine platzhaltergraphik erzeugen.
- die speicherfreigabe kann man sich dann sparen, weil je request nur ein bild zu skalieren ist.
- dafür kann man sich die imagemagick-umsetzung sparen, die an dieser stelle ansonsten keine vorteile hat