Génération image PHP
#1
Génération d'une image PHP

Je viens faire part de mon retour d'expérience sur la génération d'une image (php) permettant de voir le contenu en temps réel des messages présent sur un channel.

Explicatif:

Le but est d'utiliser les logs que va créer l'eggdrop évitant la récriture d'un script TCL.
Note importante: Il est obligatoire que l'eggdrop se trouve sur la même machine que le serveur Apache. Une solution est en cours d'écriture pour palier au problème.

Condition:

Le script nécésite la présence de (voir ci-dessous):
  • PHP
  • PHP-CGI
  • GD2
  • Crontab

Nom du channel: #image
Nombre de log nécessaire: 2

Configuration de l'eggdrop:

Voici la configuration à mettre en place.

Rajouter:
Code :
logfile p #image "logs/pimage.log"
logfile o #image "logs/jimage.log"

Attention: Vérifier la valeur de "set max-logs"

Script PHP:

Code PHP :
<?php
/*
* ================================================================
* Génération d'image
* ================================================================
* by LitteulBlack <litteulblack@ipbstudio.com>
* (c) 2008 LitteulBlack
* ================================================================
* Licence : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
* ================================================================
*/

// Environement GD2
header ("Content-type: image/png");
putenv('GDFONTPATH=' realpath('.'));

// Image background
$image imagecreatefrompng("bck_image.png");

// On récupère le fichier log message
$file_p =  file("../logs/pimage.log");

//----------------------
// Récupération de la dernière ligne
// A répéter suivant le nb de ligne à afficher
//----------------------
$l1 .= sizeof($file_p)-1;
$ligne1 .= $file_p[$l1];

// Suppression de l'heure
$ligne1=substr_replace  $ligne1""08);

// Longeur de la ligne
$max=62;
if(
strlen($ligne1)>=$max)
{
    
$ligne1=substr($ligne1,0,$max); 
    
$espace=strrpos($ligne1," "); 
    
$ligne1=substr($ligne1,0,$espace)."...";
}

// On récupère le fichier log join
$file_j file("../logs/jimage.log");

// Nombre de connecté(s) sur le channel
while($row array_pop($file_j))
{
    if (
preg_match('#\]$#'$row))
    {
        
preg_match('#\[m\/([0-9])#'$row$user);
        break;
    }
}

// Définition de la couleur et la police d'écriture
$color_p imagecolorallocate($image255255255);
$font_p 'message.ttf';
$color_j ImageColorAllocate ($image255255255);
$font_j 'users.ttf';

// Insertion du texte
imagettftext($image1006034$color_p$font_p$ligne1); // Message ligne 1
imagettftext($image8015116$color_j$font_j$user[1]); // Nombre d'users

// Génération de l'image
imagepng($image"final_image.png");
?>

------
Extrait de pimage.log

Code :
....
[15:54] <Eggdrop> Bonjour LitteulBlack !!
[15:55] <LitteulBlack> Bonjour Eggdrop :)

------
Extrait de jimage.log

Code :
....
[15:51] Dernier message repété 1 fois.
[15:55] +#image (+trn) : [m/4 o/2 h/0 v/2 n/1 b/0 e/0 I/0]

------
bck_image.png
[Image: http://www.litteulblack.net/share/bck_image.png]

------
final_image.png
[Image: http://www.litteulblack.net/share/final_image.png]

Je vous invite à lire la documentation sur la fonction "imagettftext()" > par ici

Crontab:

Pour permettre de générer un image de façon périodique, j'utilise crontab.

Code :
*/5 * * * * /usr/bin/php-cgi -f ...image.php

N'oubliez pas de verifier les permissions des fichiers.
------
Si vous avez des questions je suis disponible Smile
Répondre Avertir


Messages dans ce sujet
Génération image PHP - par LitteulBlack - 30/12/2008, 16:07
RE: Génération image PHP - par Piepierre - 30/12/2008, 16:19
RE: Génération image PHP - par CrazyCat - 30/12/2008, 16:25
RE: Génération image PHP - par LitteulBlack - 30/12/2008, 18:03
RE: Génération image PHP - par CrazyCat - 30/12/2008, 18:53
RE: Génération image PHP - par LitteulBlack - 30/12/2008, 21:34
RE: Génération image PHP - par CrazyCat - 30/12/2008, 23:26

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté