Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Site Web > PHP > [XML]Comment en faire une image PNG ? > Lecture du sujet

[XML]Comment en faire une image PNG ?

Développement de statut MSN

Vous devez être inscrit pour pouvoir poster des messages

Page : 1  2  3  4  5  6  7  8  Suivante
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1  2  3  4  5  6  7  8  Suivante
Hors ligne Diti # Posté le 25/06/2006 à 18:38:17
Manchot empereur
Avatar
Groupe : Membres
Image utilisateur

Citation : Diti
Bonjour, amis Zér0s :)

Je suis en train de me concocter une petite signature, qui affichera mon image perso de MSN, et qui envoiera un fichier XML dans mon FTP. C'est un script de MSN Plus Live.
Alors voià, j'ai une image perso (vous étonnez pas si elle change, le script fonctionne déjà :D ) :

Image utilisateur

Et j'ai un fichier XML statutmsn.xml qui se présente comme ceci :

Code : XML
<Details>
<Pseudo>Diti</Pseudo>
<MessagePerso>Etaty le pigeon a trouvé un confrère =)</MessagePerso>
<Statut>En ligne</Statut>
</Details>


Je voudrais savoir :
  • Comment en faire une image de statut, sachant que j'ai déjà pris un screen de Live Messenger, mais je ne sais pas découper l'image, etc...
  • Comment changer les :| par un smiley par exemple ? Avec str_replace ? J'utiliserai GD.


Et une fois que j'ai obtenu satisfaction, j'en fais immédiatement un tuto :)
Édité le 13/07/2006 à 16:19:40 par Diti
 
Hors ligne lobotomised # Posté le 25/06/2006 à 18:41:47
www.epsylone.fr
Avatar
Groupe : Membres
Salut,

Pour ta première question, aucune idée. J'ai jamais vraiment bossé sur les images.
Pour la deuxième, str_replace() oui c'est ca :)

A+ ;)

Image utilisateur
 
Hors ligne Tangui # Posté le 25/06/2006 à 18:42:50
Vi Veri Universum Vivus Vici
Groupe : Membres
Slt,

pour moi qui n'utilise que le réseau Jabber, et donc pas les produits Mircosoft, ton message est incompréhensible. Donc essaye de clarifier ça si tu désire obtenir des réponses.

Tu pourrais déjà répondre aux questions : qu'est ce qu'une image de status ? Ou est-elle stockée ? Comment compte tu transformer du texte en image ????? Tu veux créer un script php qui comprend l'histoire du pigeon et dessine quelquechose en conséquence ? Pourquoi ce que tu as écris dans le titre de ton post n'est pas repris dans le coprs ?

Voilà :/
Hors ligne Diti # Posté le 25/06/2006 à 18:50:26
Manchot empereur
Avatar
Groupe : Membres
Salut,

"Image de statut", c'est vite dit, je souhaite en faire une signature, tout simplement :)
Mon avatar utilisé sur MSN est stocké sur mon FTP, et un fichier XML résumant toutes mes informations est également envoyé.
Je compte le transformer en image à l'aide de GD, le site www.web2messenger.com propose ce service avec ses scripts. J'ai du mal à les adapter pour mon usage personnel.
Le code XML que j'ai écrit montre juste que c'est celui envoyé par Live Messenger à cette adresse : http://www.foxtwo.info/statutmsn.xml

Voilà :)

PS :Citation : Diti
Et une fois que j'ai obtenu satisfaction, j'en fais immédiatement un tuto :)
Édité le 25/06/2006 à 18:53:36 par Diti
 
Hors ligne SuprazZz # Posté le 25/06/2006 à 19:39:28
! Absent pendant 2 ans !
Avatar
Groupe : Membres
Bah, tu ais un script php qui va générer l'image à grâce à GD.
Tu ouvres ton XML, et là tu as deux solutions, soit tu récupères les donénes avec DOMXML et des trucs de ce genre, soit avec de bêtes regex.
Le second cas, est plus léger, et en plus je suppose que tu maîtrise déjà les regex.
Ensuite, selon l'état que tu récupères, tu va copier dans l'image un bonhomme vert d'un fichier iamge sur ton serveur ou un bonhomme rouge, et écrire à côté ton pseudo !

@+
 
Hors ligne Diti # Posté le 25/06/2006 à 20:02:25
Manchot empereur
Avatar
Groupe : Membres
Et comment je positionne mon image de statut et mon avatar sur l'image finie ?
Et est-ce une bonne idée de se servir de la fonction fopen() pour lire le contenu de ce fichier, en extraire le contenu dont j'ai besoin (ça je sais pas faire), le mettre dans une variable et l'afficher ?
Édité le 25/06/2006 à 20:25:20 par Diti
 
Hors ligne Pl00b # Posté le 25/06/2006 à 20:52:17
Quote²
Avatar
Groupe : Membres
Tu peut faire un fopen puis un petit explode ;)

Tuto en cour de rédaction -> Optimiser vos programmes PHP
 
Hors ligne sylefmo # Posté le 25/06/2006 à 21:00:18
Foeu !
Avatar
Groupe : Membres
Citation : Diti
Bonjour, amis Zér0s :)

Je suis en train de me concocter une petite signature, qui affichera mon image perso de MSN, et qui envoiera un fichier XML dans mon FTP. C'est un script de MSN Plus Live.
Alors voià, j'ai une image perso (vous étonnez pas si elle change, le script fonctionne déjà :D ) :

Image utilisateur

Et j'ai un fichier XML statutmsn.xml qui se présente comme ceci :

Code : XML
<Details>
<Pseudo>Diti</Pseudo>
<MessagePerso>Etaty le pigeon a trouvé un confrère =)</MessagePerso>
<Statut>En ligne</Statut>
</Details>

)


Bonjours, je suis désolé de ne pas pouvoir t'aider, mais j'aimerais bien avoir le script qui sert a afficher son avatar de msn en temps réel, merci d'avance de m'aider ^^' lol

Envie d'assumer votre geek Attitude ?
Rejoins bientôt la communauté de Becamethebest.fr (site en construction 36%)
 
Hors ligne Diti # Posté le 26/06/2006 à 09:08:51
Manchot empereur
Avatar
Groupe : Membres
Citation : homme_fort
Bonjours, je suis désolé de ne pas pouvoir t'aider, mais j'aimerais bien avoir le script qui sert a afficher son avatar de msn en temps réel, merci d'avance de m'aider ^^' lol


Ca viendra avec le tuto :p

Et sinon, voici un schéma (tout pourri, ok...) que j'ai fait, résumant ce que je dois faire.
Je vais me documenter.

Image utilisateur

Demande :D


merci :)
Je pense que je vais me servir de simplexml, mais j'aurais besoin de connaisseurs de Javascript maintenant.
Le script de configuration, en Javascript, envoie tout ça dans un fichier XML. Le problème est que simplexml n'accepte pas le fichier, car il contient des accents.

Comment ajouter une chaîne de caractères (ici <![CDATA[ et la balise fermante) dans ce script ?
Code : JavaScript
        /*
        * ---------------------------
        * void newNode (name, value)
        * Crée une nouvelle balise : <name>value</name> et la stocke en tant que balise-fille
        * ----------------------------
        */

        function newNode(name, value)
        {
                // Crée une balise vide
                var temp = xml.createElement(name);
                // Lui donne une valeur
                temp.text = value;
                // La met en balise-fille
                topNode.appendChild(temp);
        }


Merci
Édité le 26/06/2006 à 10:48:37 par Diti
 
Hors ligne Geo # Posté le 26/06/2006 à 11:57:11
Groupe : Membres
c'est exactement ce que je cherche sur ce topic , maismoi je veux directement genrer l'image contenant les infos

http://www.siteduzero.com/forum-83-52872-p1-besoin-d-aide-creation-d-image.html

Image utilisateur
 
Hors ligne NeoZer0 # Posté le 26/06/2006 à 12:39:05
Nostalgeek
Avatar
Groupe : Membres
tu utilise DOMXML ou DOM pour récupe les infos de ton XML? Après c'est simple pour faire une image tout ce dont tu as besoin est dans le cour et la doc.
Pour remplacer par un smiley un :| ou :) ca sera plus dur parce qu'il faut savoir à quel coordonnée il faut faire un imagecopymerge pour importer le smiley et ca dépend du texte. Sauf si tu sais combien prend de pixel en moyenne un caractère.

n'oubliez pas de Image utilisateur ;)
Un code php commence par <?php et fini par ?> ne l'oublier pas dans le zCode
 
Hors ligne Diti # Posté le 26/06/2006 à 13:50:33
Manchot empereur
Avatar
Groupe : Membres
Déjà, je précise que le script original est du JScript et n'est pas de moi :-°
Mais oui, il y a utilisation de DOMXML là-dedans.
Mais je cherche à récupérer les informations de chacune des balises et à éviter les erreurs d'encodage (accents), et je n'ai encore jamais fait ça. Je souhaiterais juste savoir comment récupérer ce qu'il y a entre la balise <Pseudo> (et accessoirement <![CDATA[ ) et le stocker sous une variable $pseudo :)

Mais je pense que je vais quand même me rabattre sur les scripts de Web2Messenger et lmes adapter pour moi, vu que c'est trop dur pour un semi-novice comme moi :p

Mais ça va prendre du temps :)
 
Hors ligne NeoZer0 # Posté le 26/06/2006 à 13:56:24
Nostalgeek
Avatar
Groupe : Membres
pour récuperrer le <pseudo> ou autre contenu d'une balise avec DOMXML
Code : PHP
<?php
if (!$dom = domxml_open_mem($xmlstr)) {
  echo "Erreur pendant le parsage du document\n";
  exit;
}

$root = $dom->document_element();

$node_array = $root->get_elements_by_tagname('*');

foreach ($node_array as $node) {
   echo ' nom noeud: ' . $node->node_name . ',valeur: .' node->node_value ."\n";
}

?>

n'oubliez pas de Image utilisateur ;)
Un code php commence par <?php et fini par ?> ne l'oublier pas dans le zCode
 
Hors ligne Diti # Posté le 26/06/2006 à 14:46:51
Manchot empereur
Avatar
Groupe : Membres
Salut,

Donc la valeur de tagname (*), elle sert à récupérer le contenu de toutes les balises ? Je débute, et je n'y connais <u>rien</u> en XML avec PHP :p
Je souhaite juste savoir comment récupérer le contenu de chaque balise, sans faire ce code 3 fois :-°

Merci
 
Hors ligne NeoZer0 # Posté le 26/06/2006 à 15:08:02
Nostalgeek
Avatar
Groupe : Membres
* c'est toutes les balise après si tu veux une balise en particulier tu met son nom

n'oubliez pas de Image utilisateur ;)
Un code php commence par <?php et fini par ?> ne l'oublier pas dans le zCode
 
Hors ligne Diti # Posté le 26/06/2006 à 15:15:39
Manchot empereur
Avatar
Groupe : Membres
Okay, avec simplexml_load_file, je reçois un array intéressant :)
http://www.foxtwo.info/dom.php5 (Y'a même le nombre de caractères !)

Code : PHP
object(SimpleXMLElement)#1 (3) {
  ["Pseudo"]=>
  string(75) "[c=#2222FF][b]Diti     Le C c'est bien. Mais le Python, c'est bon ![/b][/c]"
  ["MessagePerso"]=>
  string(52) "A failli mourrir étouffé en mangeant un litchee :|"
  ["Statut"]=>
  string(8) "En ligne"
}


Je n'ai donc plus qu'à retirer les accents et à les remplacer par leurs équivalents sans accents, mettre des _ pour les caractères spéciaux...
C'est le seul moyen que j'ai trouvé, mais ça marche :p
Édité le 26/06/2006 à 15:31:26 par Diti
 
Hors ligne NeoZer0 # Posté le 26/06/2006 à 15:36:30
Nostalgeek
Avatar
Groupe : Membres
suffit de convertir les caractére spéciaux en iso et c'est bon

n'oubliez pas de Image utilisateur ;)
Un code php commence par <?php et fini par ?> ne l'oublier pas dans le zCode
 
Hors ligne Diti # Posté le 26/06/2006 à 15:42:27
Manchot empereur
Avatar
Groupe : Membres
Oui, mais comment ?
L'envoi du XML sur le serveur est très complexe, et j'ai déjà de la difficulté à comprendre comment toutes les données de MSN sont mises dans un XML, alors quand à ajouter <?xml version="1.0" encoding="iso-8859-1 "?> dedans..
J'ai qu'à chercher, si tout le monde faisait ça à ma place, j'apprendrais rien :p
Édité le 26/06/2006 à 15:43:37 par Diti
 
Hors ligne NeoZer0 # Posté le 26/06/2006 à 15:46:01
Nostalgeek
Avatar
Groupe : Membres
c'est quoi l'encodage utiliser??

n'oubliez pas de Image utilisateur ;)
Un code php commence par <?php et fini par ?> ne l'oublier pas dans le zCode
 
Hors ligne Diti # Posté le 26/06/2006 à 16:13:13
Manchot empereur
Avatar
Groupe : Membres
Justement, y'en a pas :p
Mais je viens de discuter par mal avec le créateur de ce script, il a distribué une nouvelle version qui ajoute de nouvelles balises au XML et les met entre les fameuses <![CDATA[ ]]> pour "une meilleure compréhension de l'encodage UTF-16"

Donc, maintenant que ma solution avec simplexml_load_file requiert la lecture de l'intérieur des CDATA, retour à la case départ :D
 
Hors ligne Geo # Posté le 26/06/2006 à 23:34:28
Groupe : Membres
Tiens si tu veux mon petit code :

Code : PHP
<?php


if (file_exists('details.xml')) {
   $xml = simplexml_load_file('details.xml');
   //var_dump($xml);

} else {
   exit('Echec lors de l\'ouverture du fichier http://iwc.jexiste.fr/details.xml.');
}

// Création de l'image
$fichierImage = imagecreatetruecolor(500, 100) or die("L'image n'a pas été générée ! Désolé");
 
// Texte à afficher
$policeTitre = 4; // La plus grande police
$police = 2; // La plus petite police
 
// Fonction pour déterminer le centrage de la chaine de caractères (elle prend comme paramètre : la chaine et la police d'écriture
function centrage_texte($z,$y)
    {
        // Je calcule le nombre de caractères dans la chaine
        $a = strlen($z);
        // Je calcule la taille d'un caractère par rapport à la taille de la police
        $b = imagefontwidth($y);
        // Je calcule la taille de ma chaine de caractères         
        $c = $a*$b;
        // Je calcule combien il me reste de caractères/espace sur les côtés pour centrer mon texte
        $d = 350-$c;
        // Je recherche l'emplacement où débutera ma chaine de caractères
        $e = $d/2;     
        // La chaine commencera ... à cet emplacement     
        return $e;         
    }
     
// Couleurs
$couleurFond = imagecolorallocate($fichierImage,99,150,209); // C'est du rouge !
$couleurTexte = imagecolorallocate($fichierImage,255,255,255); // C'est du noir !
 
// Création d'un rectangle
imagefilledrectangle($fichierImage, 0, 0,500,100,$couleurFond);
 
// Textes à centrer
$texte1 = 'Pseudo: '.$xml->Username.'';
$texte2 = 'Message Perso: '.$xml->PSM.'';
$texte3 = 'Status: '.$xml->Status.'';

 
// Insertion des textes + utilisation de la fonction pour centrer
imagestring($fichierImage,$policeTitre,12,10,$texte1,$couleurTexte);
imagestring($fichierImage,$police,12,30,$texte2,$couleurTexte);   
imagestring($fichierImage,$police,12,50,$texte3,$couleurTexte);   
     
// Type de l'image
header("Content-type: image/jpeg");
 
// Expédition de l'image au navigateur
imagejpeg($fichierImage);
 
// Destruction de l'image
imagedestroy($fichierImage);
 

?>
  </body>
</html>



tu peux voir le resultat ici

Image utilisateur


la je galere un peu pour mettre l'avatar

j'essaye de rajouter une variable $texte4 mais je ne vois pas comment charger une image par dessus


Si quelqu'un saurait comment faire , merci de faire signe! :p
Édité le 26/06/2006 à 23:38:12 par Geo

Image utilisateur
 
Hors ligne Diti # Posté le 27/06/2006 à 09:02:04
Manchot empereur
Avatar
Groupe : Membres
C'est bien, tout le monde s'active pour avoir un résultat :D
Je vais regarder ton code, et essayer tout ça :)

Pour l'avatar, qui est en 96*96, on est obligé de le redimensionner dynamiquement ? Est-ce qu'on peut le faire uniquement si la date de modification de l'image a changé ?
 
Hors ligne NeoZer0 # Posté le 27/06/2006 à 09:08:56
Nostalgeek
Avatar
Groupe : Membres
rajoute ca:
Code : PHP

$avatar = imagecreatefrom(png/jpeg/gif)("avatar.(png/jpeg/gif)");
$largeur_avatar = imagesx($avatar);
$hauteur_avatar = imagesy($avatar);
imagecopymerge($fichierImage, $avatar, $abscisse, $ordonnee, 0, 0, $largeur_avatar, $hauteur_avatar, 60);
Édité le 27/06/2006 à 09:10:01 par NeoZer0

n'oubliez pas de Image utilisateur ;)
Un code php commence par <?php et fini par ?> ne l'oublier pas dans le zCode
 
Hors ligne baba0076 # Posté le 27/06/2006 à 10:11:15
Qui ne tente rien n'a rien !
Avatar
Groupe : Bannis
Le problème, c'est que ça ne marchera pas pour tout le monde ! :(

VENDS BOITIER ADVANCE XBLADE 8110B - 60 €
VENDS GAMECUBE + 6 JEUX, 3 MANETTE, 4 MEMORY - 150 €
VENDS SONY ERICSSON W550i + SPEAKERS + CD + CABLE - 150 €

PAR MP SVP
 
Hors ligne NeoZer0 # Posté le 27/06/2006 à 10:54:45
Nostalgeek
Avatar
Groupe : Membres
Citation : baba0076
Le problème, c'est que ça ne marchera pas pour tout le monde ! :(

c'est à dire?? ou il faut GD d'activé

n'oubliez pas de Image utilisateur ;)
Un code php commence par <?php et fini par ?> ne l'oublier pas dans le zCode
 
Hors ligne Geo # Posté le 27/06/2006 à 11:44:21
Groupe : Membres
Citation : NeoZer0
rajoute ca:
Code : PHP

$avatar = imagecreatefrom(png/jpeg/gif)("avatar.(png/jpeg/gif)");
$largeur_avatar = imagesx($avatar);
$hauteur_avatar = imagesy($avatar);
imagecopymerge($fichierImage, $avatar, $abscisse, $ordonnee, 0, 0, $largeur_avatar, $hauteur_avatar, 60);




j'ai un petit peu modifié le code et j'obtient ça:
Image utilisateur

maintenant faut que je fasse les accents car sinon cela me fait des lettres bizarres

faut pas avoir un pseudo trop long ou alors sa ecrit par dessus l'avatar , ou sinno faut agrandir le cadre
Édité le 27/06/2006 à 12:30:15 par Geo

Image utilisateur
 
Hors ligne pafnow # Posté le 27/06/2006 à 20:16:19
Avatar
Groupe : Membres
Pas mal !!!
J'ai réussi à faire de même mais j'ai toujours un problème pour les accents.
Les é est remplacé par des AS bizzares...

Regardez :
http://www.pafnow.net/statut_msn/parser.php5

En tout cas, merci à vous :D
Hors ligne Diti # Posté le 28/06/2006 à 08:55:04
Manchot empereur
Avatar
Groupe : Membres
Ca, c'est normal, c'est GD et tu peux rien y faire.
Ou alors, c'est dû à l'encodage UTF-8 du fichier XML, encodage qui n'a pas été mis dans le fichier XML.
Mais est-ce que ça marche si on met \u00E9 (code UTF-8 internationnal) à la place du "é" ?

EDIT : Oh, tant qu'à faire :
Code : PHP
$smileys_from = array(":)",":-)",":D",":d",";)",";-)",":o",":O",":-O",":P",":p",":-p",":-P",
"(h)","(H)",":@",":-@",":$",":-$",":s",":S",":-S",":-s",":-(",":(",":'(",":|",
":-|","(6)","(A)","(a)","(L)","(l)","(U)","(u)","(m)","(M)","(@)","(&)","(S)",
"(*)","(~)","(8)","(E)","(e)","(F)","(f)","(w)","(W)","(O)","(o)","(K)","(k)",
"(G)","(g)","(^)","(p)","(P)","(i)","(I)","(C)","(c)","(t)","(T)","({)","(})",
"(B)","(b)","(D)","(d)","(Z)","(z)","(x)","(X)","(y)","(Y)","(n)","(N)",":[",
":-[","(?)","(%)","(#)","(R)","(r)",":-#","8o|","8-|","^o)",":-*","+o(","(sn)",
"(tu)","(pl)","(||)","(pi)","(so)","(au)","(ap)","(um)","(ip)","(co)","(mp)",
"(brb)","(st)","(yn)","(h5)","(mo)","(bah)",":^)","*-)","(li)","<:o)","8-)",
"(ci)","(xx)","(nah)");
  $smileys_to = array("1","1","2","2","3","3","4","4","4","5","5","5","5","6","6","7","7","8",
"8","9","9","9","9","10","10","11","12","12","13","14","14","15","15","16","16","17","17","18",
"19","20","21","22","23","24","24","25","25","26","26","27","27","28","28","29","29","30","31",
"31","32","32","33","33","34","34","35","36","37","37","38","38","39","39","40","40","41","41",
"42","42","43","43","44","45","46","47","47","48","49","50","51","52","53","54","55","56","57",
"58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76",
"77","78","79");
  $string = explode(" ", $string);
  $isImage = 0;
  for ($i=0; $i<count($string);$i++) {
    $isImage = 0;
    for($j=0;$j<count($smileys_from);$j++) {
      if($smileys_from[$j] == $string[$i]) {
        $isImage = 1;
        $img_smiley[$i] = imagecreatefrompng("./smileys/".$smileys_to[$j].".png");
        $resampled_size = $size * 1.9;
        $decalage = $size * 1.5;
        imagecopyresampled($image, $img_smiley[$i], $left, $top-$decalage, 0, 0, $resampled_size, $resampled_size, imagesx($img_smiley[$i]), imagesy($img_smiley[$i]));
        $left += $resampled_size + 5;
      }


Oh, mais de rien.

EDIT 2 : Voici ma bêta-test :
Image utilisateur

Prochaine étape : La mettre aux normes SdZ, c'est-à-dire 450 px (déjà fait) sur 75 px ( o_O )
Édité le 05/07/2006 à 10:05:40 par Diti
 
Hors ligne pafnow # Posté le 28/06/2006 à 11:10:47
Avatar
Groupe : Membres
Pas mal !
Mais les smileys ne fonctionnent pas on dirait...
Sinon c'est possible que tu me donne ton font copié de Live Messenger ?
Merci d'avance !
Hors ligne Diti # Posté le 28/06/2006 à 11:13:17
Manchot empereur
Avatar
Groupe : Membres
Mon font ?
C'est-à-dire ?
La police d'écriture ou l'image de fond ?
Aaaaah ! Fond :lol:

Hum, j'sais pas... :p
Image utilisateur

Méchant de réclamer le travail des autres :D

PS : Le code pour rajouter l'avatar ne fonctionne pas... Header already sent... (j'ai déjà fait la fonction imagecreatefrompng avant, donc...
Une solution ?
Édité le 28/06/2006 à 11:16:39 par Diti
 

Retour au forum "PHP" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 802 Zéros connectés | Requêtes SQL 7 requêtes | Temps de génération de la page : Total (SQL) 0.0619s (0.0394s)