|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : juin 2007 Messages : 86 ![]() |
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 ) ?
|
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Inscription : juin 2007 Messages : 89 ![]() |
Tu as bien analyser la problématique, pour traiter une image il faut la décompresser que ce sois jpg, png ou gif. Par contre tu peux traiter l'image dans un processus externe (exec par exemple) et donc d'utiliser d'autres programme sans limitation de mémoire (je pense à ImageMagik).
Sinon tu stockes les images et tu les traites sur un autres serveur (ou chez toi pour un site perso). |
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : juin 2007 Messages : 86 ![]() |
le probleme est que je cherche la solution miracle moi
imagemagik n'est pas souvent installé, quant a l'idée de délocaliser le traitement, c'est une idée oui m'enfin, elle a ses gros inconvenients. Je viens de faire une petite rechereche express sur google, et j'ai remarqué qu'il était possible de récupérer des jpeg pour lesquels il manque un bout (avec certains logiciels payants ou avec de la patience et un éditeur hexa Donc ça donne espoir.. Je vais essayer de jeter un coup d'oeil a la libjpeg que j'avai téléchargé du le temps ou je m'était essayé a l'opengl, mais il y a peu de chance que j'y comprene quoi que ce soit Edit: comme prévu j'y comprend rien. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com