rethenor
Messages postés48Date d'inscriptionmercredi 11 juillet 2007StatutMembreDernière intervention 9 mai 2011
-
24 juil. 2007 à 23:22
rethenor
Messages postés48Date d'inscriptionmercredi 11 juillet 2007StatutMembreDernière intervention 9 mai 2011
-
25 juil. 2007 à 15:42
Bonjour à tous,
Soucieux de fournir un script en un seul fichier, je cherche à créer une image en PHP sans utiliser les fonctions ImageXXXX() mais en utilisant les octets d'une image déjà existante.
Voilà : J'ai une (petite) image et l'ai chargée dans debug pour en connaître les octets.
J'ai obtenu "89 50 4E 47 0D 0A .... 42 60 82"
Je sais que ça ne doit pas être sorcier mais je galère pour trouver une fonction du style make_img() qui me retournerait les octets de l'image pour l'utiliser dans une balise telle que :
echo "";
J'avais pensé à ranger ces octets dans un tableau, puis de les concaténer un par un dans une chaine qui serait retournée :
pysco68
Messages postés681Date d'inscriptionsamedi 26 février 2005StatutMembreDernière intervention21 août 20148 25 juil. 2007 à 13:59
C'est normal que ça marche pas... comme ça tu essaye d'écrire le code image brut DANS la page wap...
le navigateur sait pas gèrer ça... il faut que tu fasse ça comme ça:
et ta page php en mode 'make_image' ne doit exécuter que ça:
pysco68
Messages postés681Date d'inscriptionsamedi 26 février 2005StatutMembreDernière intervention21 août 20148 25 juil. 2007 à 15:30
Tu peux éviter ça ^^ et mets cette partie en début de script, tu fais une vérification si tu dois exécuter la sortie d'image et tu ajoute un die(); à la fin de ta fonction de sortie d'image; après le echo base64_decode().... comme ça dès que tu veux l'image ben le scrpt n'est qu'exécuté jusque là.... bon après honnêtement le serveur sentira pas masse de différence entre charger 30 ou 120k de script en mémoire et de l'exécuter si ce sont toujours des fonctions de base comme base64_decode ^^
Bon si t'y tiens je veux bien ton code ^^ on sait jamais ce u'on peut y dénicher
<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et ça démo ---> Google est ton meilleur ami! <---
<hr size="2" width="100%" />
pysco68
Messages postés681Date d'inscriptionsamedi 26 février 2005StatutMembreDernière intervention21 août 20148 25 juil. 2007 à 09:44
Ben euh...... j'ai aussi un peu de mal à suivre pourquoi tu veux faire ça, mais bon;
première chose à faire c'est déjà de définir le mime-type de ta sortie (ptetr que c'est déjà fait ^^ )
<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et ça démo ---> Google est ton mailleur ami! <---
<hr size="2" width="100%" />
Vous n’avez pas trouvé la réponse que vous recherchez ?
rethenor
Messages postés48Date d'inscriptionmercredi 11 juillet 2007StatutMembreDernière intervention 9 mai 2011 25 juil. 2007 à 12:10
C'est plus par défi que par nécessité.
J'ai fait un script wap qui gère un carnet de contacts et qui peut leur envoyer des mails. Gérer c'est un bien grand mot : ajout, suppression, listage des noms/adresses mail, c'est tout.
Jusqu'ici, il n'y a qu'un seul et unique fichier qui crée lui-même et modifie (ajout suppression) le fichier de contacts, qui crée les différentes cartes du deck et qui fait appel à lui-même pour, en fonction des paramètres, "gérer" ces contacts ou envoyer les mails.
Le menu principal, c'est :
> contacts
> mails
Ca fait un peut court (téléphone oblige :), je sais... Mais pour "égayer un peu", y'a un petit logo qui symbolise une appli de messagerie.
Mais je voudrais continuer sur le défi de tout faire en un seul fichier. D'où l'idée d'intégrer à ce script les octets qui constituent l'image existante afin que celui-ci puisse recréer lui-même ce logo avec une fonction qu'on appellerait en cas de besoin.
J'ai le contenu de l'image sous forme d'octets hexa. Je cherche le moyen de les regrouper sous forme de contenu binaire à afficher (afficher l'image, quoi !)
Si avec votre aide, on y arrive pas, j'en concluerai que c'est impossible, mais ça sera pas la fin du monde :) C'est juste un défi.
pysco68
Messages postés681Date d'inscriptionsamedi 26 février 2005StatutMembreDernière intervention21 août 20148 25 juil. 2007 à 12:13
ok maintenant j'ai compris!!! attends un peu j'ai quelquechose dans mes arches ;)
<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et ça démo ---> Google est ton meilleur ami! <---
<hr size="2" width="100%" />
pysco68
Messages postés681Date d'inscriptionsamedi 26 février 2005StatutMembreDernière intervention21 août 20148 25 juil. 2007 à 12:27
Ai pas retrouvé ce que j'avait fait, mais jlai vite reprogrammé :)
Donc voici le code pour afficher l'image: <hr size= "2" width="100%" />header("Content-type: image/gif");
$image = 'R0lGODlhKwAoANUtAK+ytdTW2L/BxPn5+u/v8LS3unuAgunq6/r6+tXW2K+yturr7MnLzrm8v7/CxcTGyd/g4t/g4fT09e/w8bq8wOTl5sXHydnb3Nrb3bW3u8/Q0+Xm58rMzvX19t7f35yfoc3P0KyvsKSnqb2/wMXHyO7v79XX1+bn54OHic/R0/b396qtsf///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAC0ALAAAAAArACgAAAb/wJZwKEQsiMikcslsQRQrBUS44EBXUQsE0ewSO1gAFmLBms+KBNfbTKwerMeZQWDZCZcCVrFhMyErAHJYBXV2h3YVeiscfksUZw0DiJR2AVgUa45ETysFk5WVFWKZm0QLWIahlQSkmpsOZ4KqqyytKxamLRhnZgAStYcEWAmbCFABoBINKwHBhxFYE44bnpSXzs92cg6Obs4gBh8s2Np2A2IQHQtHbc0sIQYG5O8VDIuCB5WXZ41MZRFYfJDHQsAKDcywCBAgZkVAROgUYmkSSx8JAyJYNFwhoAKiUSv0IdLwhkEUiis8qhhR4oAZBh5GkEDkEg6iYWamMEnBEdEg/wEe5BkAgUhPJTEO2jHpAKXAhQMmsUiIJ88EIoOVDPbxwqvXigYChXq4umLfimJeJmB5IIDBJQ1hDaCghPXaWT9QDLl0JkIeUURYKpnE4IfDCgZ29trxcILSMAGVmCntggrApAFfa114h0gCllddMji0YxBYKGa0BjBT4MBBgmldABVI9BXUTWuHVHtd4QA0kmOjWZiUBJHZQ1t6AEQ4cCACA1JdeFlmMUAOgAAHJETQAzmRmEKUJIiZ3GJBAgutzcC1tJEQMAmDiGdd0Q5Bgiu7RVK/wFbAhQEERHVYLWJMM4FonjDw1AEDRCDGdczZIUFz95yRTSibZSBELAXod3fTIrvtUYYnHgqTTgtqTbfKAAah4YAFCbSzAIId5cZPN+X1VAsBi6jBhH2+CJAQLmukqBkmsHXRQQIIYqLTEFAcd4gELVrgWxcTsHOlGwCoMkAADRGmSxcIQAKABgE8h4UDSY7ZRJm9UPCkm2xskEACGLRJJxNBAAA7';
echo base64_decode($image);
<hr size="2" width="100%" /> Et le code pour 'faire' l'image:
<hr size ="2" width="100%" />echo base64_encode(file_get_contents('ton_fichier.gif'));
<hr size="2" width="100%" />
En gros tu fais un premier script avec le code pour 'faire' l'image, tu donne le bon chemin pour accèder à l'image. Tu copie la sortie dans $image du premier script... et ça marche... si tu veux afficher autre chose qu'un .GIF faudra changer le mime-type...
Vala ça devrait être ce que tu voulais ;)
<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et ça démo ---> Google est ton meilleur ami! <---
<hr size="2" width="100%" />
rethenor
Messages postés48Date d'inscriptionmercredi 11 juillet 2007StatutMembreDernière intervention 9 mai 2011 25 juil. 2007 à 13:54
J'arrive pas.
Si je fais comme t'as dit, pas de pb, ça marche :
<?php
$image = '....les_codes....';
header("Content-type: image/png"); // C'est une image PNG
echo base64_decode($image);
?>
Si je fais comme ça :
<?php
function make_img() {
$image = '....les_codes....';
header("Content-type: image/png");
echo base64_decode($image);
}
?>
... bla bla wap
" alt="Logo" />
J'ai l'emplacement rectangulaire où aurait dû s'afficher l'image et l'affichage de tous les codes qui sont d'ailleurs différents de ceux du source, ce qui me parait normal vu que l'affichage est base64_décodé
J'ai l'impression que c'est dû au fait qu'ayant déjà écrit du bla-bla avant l'affichage de l'image, l'envoi du header("Content-type: image/png"); lors de l'appel de la fonction passe pas car je crois que rien ne devrait avoir été envoyé avant le header("..."), non ?
pysco68
Messages postés681Date d'inscriptionsamedi 26 février 2005StatutMembreDernière intervention21 août 20148 25 juil. 2007 à 15:09
De rien :)
Jreçois un crédit loool, je rigole
Bonne journée!
<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et ça démo ---> Google est ton meilleur ami! <---
<hr size="2" width="100%" />
rethenor
Messages postés48Date d'inscriptionmercredi 11 juillet 2007StatutMembreDernière intervention 9 mai 2011 25 juil. 2007 à 15:25
Si tu veux, je t'envoie le script, ça va t'amuser car c'est pas forcément optimisé vu que pour n'afficher que l'image il recharge complètement le fichier, mais c'était juste pour essayer d'arriver à tout mettre dans le même fichier... :o)