Je cherche à récupérer le contenu d'une image jpeg générée grâce à imagejpeg de la librairie gd de php.
En gros, je pourrais faire comme ça :
- j'ai mon image en RAM $src au format interne à gd
- écrire mon image en jpeg dans un fichier grâce à la fonction imagejpeg ($src, $chemin);
- ouvrir ce fichier
- lire le contenu
- effectuer mon traitement sur ce contenu
- envoyer le résultat
Mais ça m'embête un peu de devoir faire des accès disque alors que je pourrais peut-être traiter tout en RAM.
Donc je voudrais faire
- j'ai mon image en RAM $src au format interne à gd
- convertir en RAM mon image $src en données, il s'agirait en fait du contenu du fichier jpeg. Mais je ne veux évidemment pas passer par un fichier
- effectuer mon traitement sur ce contenu
- envoyer le résultat
en gros, ce qu'il me faudrait, c'est une fonction équivalente à imagejpeg mais qui renvoie le résultat sous forme de string :
un truc du style :
Au lieu de :
J'ai également vu que l'on pouvait écrire directement dans la sortie standard avec la fonction imagejpeg, mais je ne veux pas envoyer directement ce résultat au navigateur car j'ai un autre traitement à faire avant sur les données au format jpeg. Plus précisement, je génère un zip avec plusieurs fichiers, et j'ai donc besoin de récupérer au préalable les streams jpeg.
Savez-vous comment je peux faire?
J'ai dit que ma variable $src était du type image gd, mais en fait, je n'en sais rien et ce n'est pas vraiment documenté dans la doc gd.
Donc ma question est :
lorsque je crée une image avec la fonction createFromJpeg, le résultat est une image au format gd ou est-ce toujours une image en RAM au format jpeg?
Dans ce cas, je pourrais peut-être récupérer ce pointeur et l'utiliser pour mes traitements...
Sinon, est-il possible de rediriger la sortie standard vers une variable afin de récupérer mes données en jpeg?
Je ne sais pas si j'ai été très clair...
En gros, je pourrais faire comme ça :
- j'ai mon image en RAM $src au format interne à gd
- écrire mon image en jpeg dans un fichier grâce à la fonction imagejpeg ($src, $chemin);
- ouvrir ce fichier
- lire le contenu
- effectuer mon traitement sur ce contenu
- envoyer le résultat
Mais ça m'embête un peu de devoir faire des accès disque alors que je pourrais peut-être traiter tout en RAM.
Donc je voudrais faire
- j'ai mon image en RAM $src au format interne à gd
- convertir en RAM mon image $src en données, il s'agirait en fait du contenu du fichier jpeg. Mais je ne veux évidemment pas passer par un fichier
- effectuer mon traitement sur ce contenu
- envoyer le résultat
en gros, ce qu'il me faudrait, c'est une fonction équivalente à imagejpeg mais qui renvoie le résultat sous forme de string :
un truc du style :
Bloc de code:
$str = imagejpegToString($src);
...
Au lieu de :
Bloc de code:
$path = "monFichier.jpg";
imagejpeg($src, $path);
$data = implode("",file($path));
...
J'ai également vu que l'on pouvait écrire directement dans la sortie standard avec la fonction imagejpeg, mais je ne veux pas envoyer directement ce résultat au navigateur car j'ai un autre traitement à faire avant sur les données au format jpeg. Plus précisement, je génère un zip avec plusieurs fichiers, et j'ai donc besoin de récupérer au préalable les streams jpeg.
Savez-vous comment je peux faire?
J'ai dit que ma variable $src était du type image gd, mais en fait, je n'en sais rien et ce n'est pas vraiment documenté dans la doc gd.
Donc ma question est :
lorsque je crée une image avec la fonction createFromJpeg, le résultat est une image au format gd ou est-ce toujours une image en RAM au format jpeg?
Dans ce cas, je pourrais peut-être récupérer ce pointeur et l'utiliser pour mes traitements...
Sinon, est-il possible de rediriger la sortie standard vers une variable afin de récupérer mes données en jpeg?
Je ne sais pas si j'ai été très clair...