Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour tout le monde,
Je voudrais générer une bannière dynamique.
Elle se compose d'une image de fond, un logo et un texte.
Je n'arrive pas à fusionner ces images, n'y même afficher une image généré.
Est ce que quelqu'un pourrait m'aider ?
Cordialement,
bebar_974
Hors ligne
Salut,
regarde du côté de la bibliothèque GD, tu devrais trouver ton bonheur.
http://php.net/manual/fr/book.image.php
Hors ligne
J'ai regardé, mais quand je mets le code dans une vue, j'ai une image avec écrit dedans :
=> L'image 'http://www.monsite.com/index/afficherimage/id/2' ne peut pas être afficher correctement car elle contient des erreurs
Hors ligne
ben mets ton code, ou une erreur plus parlante ...
Hors ligne
Le code est bon car quand je l'utilise dans une application non ZF elle s'affiche :
J'ai pris le code source de l'image là : http://www.phpdebutant.org/article111.php
Voilà le code :
$visites = array(138, 254, 381, 652, 896, 720, 140, 556, 663, 331, 407, 768);
$largeurImage = 400;
$hauteurImage = 300;
$im = ImageCreate ($largeurImage, $hauteurImage)
or die ("Erreur lors de la création de l'image");
$blanc = ImageColorAllocate ($im, 255, 255, 255);
$noir = ImageColorAllocate ($im, 0, 0, 0);
$bleu = ImageColorAllocate ($im, 0, 0, 255);
// on dessine un trait vertical pour représenter l'axe du temps
ImageLine ($im, 10, $hauteurImage-10, $largeurImage-10, $hauteurImage-10, $noir);
// on affiche le numéro des 12 mois
for ($mois=1; $mois<=12; $mois++) {
ImageString ($im, 0, $mois*30, $hauteurImage-10, $mois, $noir);
}
// on dessine un trait vertical pour représenter le nombre de visites
ImageLine ($im, 10, 10, 10, $hauteurImage-10, $noir);
// le nombre maximum de visites
$visitesMax = 1000;
// tracé des batons
for ($mois=1; $mois<=12; $mois++) {
$hauteurImageRectangle = round(($visites[$mois-1]*$hauteurImage)/$visitesMax);
ImageFilledRectangle ($im, $mois*30-7, $hauteurImage-$hauteurImageRectangle, $mois*30+7, $hauteurImage-10, $bleu);
ImageString ($im, 0, $mois*30-7, $hauteurImage-$hauteurImageRectangle-10, $visites[$mois-1], $noir);
}
header ("Content-type: image/png");
ImagePng ($im);
Hors ligne
Désolé pour ma réponse tardive ...
Je ne comprends pas réellement ce que tu veux faire...
Tu veux générer une image pour l'afficher par la suite dans ton navigateur ?
Si c'est le cas, tu n'as pas besoin de changer le header, il te suffit de spécifier le chemin ou tu veux créer ton fichier avec les bons droits bien sur.
Tu veux l'afficher directement ?
Dans ce cas, c'est une autre erreur que tu as, mais avec le code que tu m'as donné, pas facile de t'aider.
Si le code que tu me donnes fonctionnes, c'est pas celui là qui m'aiderait à t'aider mais plutôt celui qui ne marche pas ...
Hors ligne
En fait, à la base, je veux créer une image avec deux images déjà existante, les superposés.
Mais là j'ai un autre soucis, je n'arrive pas à afficher l'image avec le code (qui marche ) que j'ai trouvé sur un site. j'ai mis le code dans une vue et quand je veux l'afficher j'ai une erreur me disant le message que je t'ai fourni au dessus.
Dernière modification par bebar_974 (19-01-2010 12:19:57)
Hors ligne
Est-ce que tu as désactivé le viewRenderer ?
Qu'est-ce que ça donne quand tu appelles directement l'URL de ton image dans un navigateur ?
A+, Philippe
Hors ligne
J'ai un page vide quand j'utilise la méthode :
$this->_helper->viewRenderer->setNoRender();
Dans mon action en appelant directement la page
Dernière modification par bebar_974 (19-01-2010 13:42:57)
Hors ligne
Pourquoi tu ne génères pas ton fichier, et tu l'affiches ensuite ?
Hors ligne
Comment je fais ? Avec de l'Ajax ?
Hors ligne
Rajoute ton chemin en deuxième argument de ImagePng
http://php.net/manual/en/function.imagepng.php
ImagePng ($im, '/images/ton_image.png'); // par exemple
Pense à mettre les droits en écriture sur ce dossier, et à enlever :
header ("Content-type: image/png");
et après tu mets ton image dans une balise
<img src="/images/ton_image.png" alt="ton image"/>
pour l'afficher
Pas besoin d'ajax ici ou alors je n'ai pas vraiment compris ce que tu souhaites réaliser.
Hors ligne
Okay, ça marche, l'image s'affiche correctement, merci beaucoup.
Tu saurais fusionner plusieurs images ?
Hors ligne
http://www.php.net/manual/en/function.imagecopy.php
Avec GD, tu as tout ce dont tu as besoin pour ce que tu veux faire, la fusion d'image, l'ajout de texte ...
N'hésite pas si tu as un soucis.
Bonne lecture :-)
Dernière modification par tylerdurd (19-01-2010 15:44:47)
Hors ligne
Okay merci beaucoup.
Hors ligne