Bonjour.
Je suis en ce moment confronté -comme beaucoup de gens- au probleme de limitation de la mémoire allouable par PHP (8Mo chez moi).
Et comme il n'est pas souvent possible de toucher a ce réglage dans le php.ini ou autre, par exemple dans les hébergements mutualisés..
Donc j'ai eu une idée.
1: découper le fichier en par exemple 10 morceaux(a coup de fread() ou truc dans le genre qui peu lire le binaire).
2: charger puis traiter un morceau après l'autre ( voir même en créant a côté une image à palette aux memes dimensions que celle avant découpage pour simplifier les calculs relatifs aux emplacements, etc.. )
3: pour chaque morceaux, une foi traité, l'enregistrer sur le disque et libérer sa mémoire, alors libre pour le prochain morceaux.
4:reprendre ses fread()-like et re-assembler les 10 morceaux en une seule image.
Avec l'exemple de 10 morceaux, on pourrait traiter une image de 13000*10000px par exemple sans probleme.
Il y aurait une -grosse- perte de performance notament a cause des access disques, mais pour une utilisation personelle ou bien avec une bonne gestion de la charge du serveur ça pourrait le faire.
Par contre, -le- probleme a mon avis c'est..
l'entête du fichier. il faudrait pouvoir la récupérer, puis la coller sur chaque morceaux, et enfin, a la fin, l'enlever des morceaux avant de réassembler l'image.
Beaucoup plus grave encore: l'image est (généralement: jpeg, png) compréssé, donc pas 'découpable' façon brute et bourrin. En plus, la librairie jpeg n'existe pas pour php a ma conaissance ( mais de toute façon, ca ne ferai que reporter le probleme).
Bref. voila une idée qu'elle est farfelue non ?
Qu'en pensez-vous ? c'est faisable (sans ré-écrire l'algo jpeg) ? je rêve (je croi que oui
) ?
Partager