Pages: 1
|
Membre
|
Bonjour,
Je cherche un script PHP pour fair exactement comme ca --> exemple
dans la barre d'adresse il y a : http://www.joueurdugrenier.fr/inc/ajax/genere_titre.php?str=texte&taille=16
Je voudrais un script qui me permette de faire ca (avec la couleur si possible)
Comme celui du SDW mais ou le texte est visible dans la barre d'adresse.
EDIT:Et de choisir la police aussi (candara dans mon cas)
|
Membre
|
Personne? :/
|
Membre
|
Je ne sais pas pour la couleur et la grosseur mais pour le texte utilise se script
<?php
//On importe l'image a laquelle nous allons ajouter le texte
$img = imagecreatefrompng('image.png');
//On prepare la couleur, en RGB
$noir = imagecolorallocate($img, 0, 0, 0);
//On ajoute le texte a l'aide de la fonction imagettftext
imagettftext($img, 20, 0, 15, 30, $noir, 'chopin_script.ttf', '<?php echo $_GET['texte'];?>');
//On affiche l'image
header('Content-type: image/png');
imagepng($img);
?>
ex: http://...index.php?texte=Ton texte
|
Membre
|
OK merci je vais tester
|
Membre
|
Merci , mais il y a une erreur : Parse error: syntax error, unexpected T_STRING on line 7,
L'erreur est imagettftext($img, 20, 0, 15, 30, $noir, 'chopin_script.ttf', '<?php echo $_GET['texte'];?>');
Il y a un j'ai essayé de mettre des " ou des \' mais ca affiche <?php echo .. sur l'image ..
|
Membre
|
Et comme ça ?
<?php
//On importe l'image a laquelle nous allons ajouter le texte
$img = imagecreatefrompng('image.png');
//On prepare la couleur, en RGB
$noir = imagecolorallocate($img, 0, 0, 0);
//On ajoute le texte a l'aide de la fonction imagettftext
imagettftext($img, 20, 0, 15, 30, $noir, 'chopin_script.ttf', $_GET['texte']);
//On affiche l'image
header('Content-type: image/png');
imagepng($img);
?>
<?php ?> dans des balises déjà ouvertes, ça pouvait pas trop marcher. La balise d'ouverture a été interprétée comme du texte (string) malgré l'absence de quotes, et la seconde a fermé la première, la suite devenant du HTML envoyé tel quel au navigateur.
Ensuite, echo sert à afficher qqch sur une page HTML, pas à écrire la valeur de la variable dans une instruction PHP. Dans ce code, ce que tu as voulu faire, c'est de remplacer $_GET['texte'] par sa valeur. Donc ce n'est pas l'écrire qu'il faut, mais remplacer la variable par sa valeur, donc il suffit juste d'entrer l'instance pour que l'interpréteur PHP la remplace.
PS : Merci de penser aux balises code.
|
Membre
|
Merci Spitfire95 , il suffisait de faire comme le '$noir,' pour la couleur .
|
Membre
|
Oui.
Et si tu veux compléter la personnalisation :
<?
// Génération de l'image
$img = imagecreatefrompng('image.png'); // Image de base
$couleur = imagecolorallocate($img,$_GET['r'],$_GET['g'],$_GET['b']); // Couleur du texte en RGB
//On ajoute le texte a l'aide de la fonction imagettftext
imagettftext($img,$_GET['fontSize'],$_GET['$angle'],$_GET['x'],$_GET['y'],$couleur,$_GET['police'], $_GET['texte']);
// Affichage de l'image
header('Content-type: image/png');
imagepng($img);
?>
et dans l'url, tu pourras mettre les arguments suivants :
Quote
?fontSize= => Taille du texte en px
&police= => Police TTF à utiliser
&angle= => Angle du texte en °
&x= => Position d'écriture du texte en px (abscisses)
&y= => Position d'écriture du texte en px (ordonnées)
&r= => Taux de rouge de la couleur (0<=r<=255)
&g= => Taux de vert de la couleur (0<=g<=255)
&b= => Taux de bleu de la couleur (0<=b<=255)
&texte= => Texte à écrire
Les données seront seront à préciser dans un formulaire.
L'angle, la taille de la police, les positions x et y de départ et le texte devront être entrés dans des champs de texte,
les valeurs RGB devront être sélectionnées dans un colorpicker
la police devra être choisie dans une liste de choix.
Après, tu peux bien sûr retirer certaines des options que j'ai ajouté pour rendre plus simple ton générateur.
|
Membre
|
Merci Spitfire95 , y a pas plus complet ! Je teste toutes les options et je dit si ca marche
EDIT:Le texte ne s'affiche pas même si je ne laisse que :
/index.php?police=candara.ttf&texte=test
|
Admin
|
Bonjour,
Essaye ce code:
<?
$img = imagecreatetruecolor(100, 100);
imagefill($img, 0,0 imagecolorallocate($img, 255,255,255));
if(!isset($_GET['r'])){$_GET['r'] = 255;}
if(!isset($_GET['g'])){$_GET['g'] = 255;}
if(!isset($_GET['b'])){$_GET['b'] = 255;}
if(!isset($_GET['fontSize'])){$_GET['fontSize'] = 30;}
if(!isset($_GET['angle'])){$_GET['angle'] = 0;}
if(!isset($_GET['x'])){$_GET['x'] = 0;}
if(!isset($_GET['y'])){$_GET['y'] = 255;}
if(!isset($_GET['police'])){$_GET['police'] = 'candara.ttf';}
if(!isset($_GET['texte'])){ $_GET['texte'] = '';}
$couleur = imagecolorallocate($img,$_GET['r'],$_GET['g'],$_GET['b']);
imagettftext($img,$_GET['fontSize'],$_GET['$angle'],$_GET['x'],$_GET['y'],$couleur,$_GET['police'], $_GET['texte']);
header('Content-type: image/png');
imagepng($img);
?>
C'est le même que celui de Spitfire95, sauf que si les variables ne sont pas définies dans l'URL, des valeurs par défaut seront utilisées.
Et tu n'a pas besoin d'image de départ(image.png), ici c'est une image blanche de 100px*100px qui est utilisée comme arrière plan.
Cordialement
|
Membre
|
Voici la page en question : page de test
PS: je n'ai pas modifier le code
|
Membre
|
Quote: Ybouane C'est le même que celui de Spitfire95, sauf que si les variables ne sont pas définies dans l'URL, des valeurs par défaut seront utilisées.
Je comptais le faire au départ, mais comme je suis parti du principe que ce serait fait par un générateur, il y aurait toujours une valeur pour chacune des variables.
Par contre, je ne comprend pas l'erreur...
@Ybouane : J'ai vu le bouton "+ Plus". C'est parfait.
|
Admin
|
Bonjour,
l'erreur c'était qu'il manquait une virgule.
Voici le code:
<?
$img = imagecreatetruecolor(100, 100);
imagefill($img, 0,0, imagecolorallocate($img, 255,255,255));
if(!isset($_GET['r'])){$_GET['r'] = 255;}
if(!isset($_GET['g'])){$_GET['g'] = 255;}
if(!isset($_GET['b'])){$_GET['b'] = 255;}
if(!isset($_GET['fontSize'])){$_GET['fontSize'] = 30;}
if(!isset($_GET['angle'])){$_GET['angle'] = 0;}
if(!isset($_GET['x'])){$_GET['x'] = 0;}
if(!isset($_GET['y'])){$_GET['y'] = 255;}
if(!isset($_GET['police'])){$_GET['police'] = 'candara.ttf';}
if(!isset($_GET['texte'])){ $_GET['texte'] = '';}
$couleur = imagecolorallocate($img,$_GET['r'],$_GET['g'],$_GET['b']);
imagettftext($img,$_GET['fontSize'],$_GET['$angle'],$_GET['x'],$_GET['y'],$couleur,$_GET['police'], $_GET['texte']);
header('Content-type: image/png');
imagepng($img);
?>
Cordialement
|
Membre
|
Ah, en effet. Difficile à voir, ces petites erreurs.
Pourquoi ne pas mettre d'image de fond, comme avant ?
<?
if(isset($img){
$createfrom='imagecreatefrom'.pathinfo("/forum/index.php")[1];
$img = $createfrom($_GET['image']);}
else {
if(!isset($_GET['r_bg'])){$_GET['r_bg']=0;}
if(!isset($_GET['g_bg'])){$_GET['g_bg']=0;}
if(!isset($_GET['b_bg'])){$_GET['b_bg']=0;}
if(!isset($_GET['width'])){$_GET['width']=0;}
if(!isset($_GET['height'])){$_GET['height']=0;}
$img = imagecreatetruecolor($_GET['width'],$_GET['height']);
imagefill($img, 0,0, imagecolorallocate($img,$_GET['r_bg'],$_GET['g_bg'],$_GET['b_bg']));}
if(!isset($_GET['r_fg'])){$_GET['r_fg'] = 0;}
if(!isset($_GET['g_fg'])){$_GET['g_fg'] = 0;}
if(!isset($_GET['b_fg'])){$_GET['b_fg'] = 0;}
if(!isset($_GET['fontSize'])){$_GET['fontSize'] = 16;}
if(!isset($_GET['angle'])){$_GET['angle'] = 0;}
if(!isset($_GET['x'])){$_GET['x'] = 0;}
if(!isset($_GET['y'])){$_GET['y'] = 60;}
if(!isset($_GET['police'])){$_GET['police'] = 'candara.ttf';}
if(!isset($_GET['texte'])){ $_GET['texte'] = '';}
$couleur = imagecolorallocate($img,$_GET['r_fg'],$_GET['g_fg'],$_GET['b_fg']);
imagettftext($img,$_GET['fontSize'],$_GET['$angle'],$_GET['x'],$_GET['y'],$couleur,$_GET['police'], $_GET['texte']);
header('Content-type: image/png');
imagepng($img);
?>
J'ai remplacé la couleur par défaut du texte par 0,0,0 car l'image étant blanche, blanc sur blanc, c'est pas très lisible. Donc noir sur blanc par défaut.
Et j'ai ajouté la possibilité de charger une image autre que png. La fonction pour séparer le nom du fichier de l'extension ne fonctionne peut-être pas. À vérifier. J'ai fait un mélange de ce que j'ai trouvé en PHP et de ce que j'aurais (j'ai) fait en Python ^^
==EDIT==
Ça ne peut pas marcher. L'image par défaut fait 100x100 px. La taille du texte est trop grande par rapport à la taille de l'image, et y par défaut est beaucoup trop élevé.
J'ai mis y=60 et fontSize à 16px par défaut.
==EDIT 2==
J'ai ajouté la possibilité de définir les couleurs de fond si aucune image n'est spécifiée.
Donc r_bg; g_bg; et v_bg sont pour le background, et r;g;b ont étés remplacées par r_fg; g_fg; et b_fg pour le foreground.
==EDIT 3==
Et maintenant, si aucune image de base n'est spécifiée, il est possible de choisir les dimensions avec width et height.
On peut difficilement faire plus personnalisable
|
Membre
|
C'est tres complet Il y a quelques petites erreurs , voici le code que j'utilise :
<?php
if(isset($img)){
$createfrom='imagecreatefrom'.pathinfo("image.png"). 1;
$img = $createfrom($_GET['image']);}
else {
if(!isset($_GET['r_bg'])){$_GET['r_bg']=0;}
if(!isset($_GET['g_bg'])){$_GET['g_bg']=0;}
if(!isset($_GET['b_bg'])){$_GET['b_bg']=0;}
if(!isset($_GET['width'])){$_GET['width']=0;}
if(!isset($_GET['height'])){$_GET['height']=0;}
$img = imagecreatetruecolor($_GET['width'],$_GET['height']);
imagefill($img, 0,0, imagecolorallocate($img,$_GET['r_bg'],$_GET['g_bg'],$_GET['b_bg']));}
if(!isset($_GET['r_fg'])){$_GET['r_fg'] = 0;}
if(!isset($_GET['g_fg'])){$_GET['g_fg'] = 0;}
if(!isset($_GET['b_fg'])){$_GET['b_fg'] = 0;}
if(!isset($_GET['fontSize'])){$_GET['fontSize'] = 16;}
if(!isset($_GET['angle'])){$_GET['angle'] = 0;}
if(!isset($_GET['x'])){$_GET['x'] = 0;}
if(!isset($_GET['y'])){$_GET['y'] = 60;}
if(!isset($_GET['police'])){$_GET['police'] = 'candara.ttf';}
if(!isset($_GET['texte'])){ $_GET['texte'] = '';}
$couleur = imagecolorallocate($img,$_GET['r_fg'],$_GET['g_fg'],$_GET['b_fg']);
imagettftext($img,$_GET['fontSize'],$_GET['$angle'],$_GET['x'],$_GET['y'],$couleur,$_GET['police'], $_GET['texte']);
header('Content-type: image/png');
imagepng($img);
?>
Dans la barred'adresse il y a :
/index.php?img=image.png&texte=texte1&width=1000&height=150&r_fg=255&g_fg=255&b_fg=255&fontSize=72
Mais il n'y a plus d'image de fond , le fond est noir ...
|
Membre
|
Oops ^^
<?
if(isset($_GET['image'])){
$createfrom='imagecreatefrom'.pathinfo("/forum/index.php")[2];
$img = $createfrom($_GET['image']);}
else {
if(!isset($_GET['r_bg'])){$_GET['r_bg']=255;}
if(!isset($_GET['g_bg'])){$_GET['g_bg']=255;}
if(!isset($_GET['b_bg'])){$_GET['b_bg']=255;}
if(!isset($_GET['width'])){$_GET['width']=200;}
if(!isset($_GET['height'])){$_GET['height']=20;}
$img = imagecreatetruecolor($_GET['width'],$_GET['height']);
imagefill($img, 0,0, imagecolorallocate($img,$_GET['r_bg'],$_GET['g_bg'],$_GET['b_bg']));}
if(!isset($_GET['r_fg'])){$_GET['r_fg'] = 0;}
if(!isset($_GET['g_fg'])){$_GET['g_fg'] = 0;}
if(!isset($_GET['b_fg'])){$_GET['b_fg'] = 0;}
if(!isset($_GET['fontSize'])){$_GET['fontSize'] = 16;}
if(!isset($_GET['angle'])){$_GET['angle'] = 0;}
if(!isset($_GET['x'])){$_GET['x'] = 0;}
if(!isset($_GET['y'])){$_GET['y'] = 60;}
if(!isset($_GET['police'])){$_GET['police'] = 'candara.ttf';}
if(!isset($_GET['texte'])){ $_GET['texte'] = '';}
$couleur = imagecolorallocate($img,$_GET['r_fg'],$_GET['g_fg'],$_GET['b_fg']);
imagettftext($img,$_GET['fontSize'],$_GET['$angle'],$_GET['x'],$_GET['y'],$couleur,$_GET['police'], $_GET['texte']);
header('Content-type: image/png');
imagepng($img);
?>
|
Membre
|
Parse error: syntax error, unexpected '{' on line 2
J'ai essayé de changer comme la dernière fois : en mettant un ) juste avant le { mais la ca ne marche pas.
|
Membre
|
Corrigé. C'était en effet une parenthèse fermante manquante.
Cordialement.
|
Membre
|
C'est ce que j'ai essayé , mais ca met :
Parse error: syntax error, unexpected '[' on line 3
|
Membre
|
Là je sais pas trop. J'ai utilisé la syntaxe Python sur du PHP en fait ^^'
Je voulais obtenir le 3e élement de la liste. Je vais chercher comment on fait en PHP.
|
Admin
|
Bonjour,
Essaye:
<?
if(isset($_GET['image'])){
$ext = pathinfo($_GET['image']);
$ext = $ext['extension'];
if($ext=='png')
{
$img = imagecreatefrompng($_GET['image']);
}
elseif($ext=='gif')
{
$img = imagecreatefromgif($_GET['image']);
}
elseif($ext=='jpg' or $ext=='jpeg')
{
$img = imagecreatefromjpeg($_GET['image']);
}
else
{
echo 'Erreur format d\'image non supporte.';
exit;
}
}
else {
if(!isset($_GET['r_bg'])){$_GET['r_bg']=255;}
if(!isset($_GET['g_bg'])){$_GET['g_bg']=255;}
if(!isset($_GET['b_bg'])){$_GET['b_bg']=255;}
if(!isset($_GET['width'])){$_GET['width']=200;}
if(!isset($_GET['height'])){$_GET['height']=20;}
$img = imagecreatetruecolor($_GET['width'],$_GET['height']);
imagefill($img, 0,0, imagecolorallocate($img,$_GET['r_bg'],$_GET['g_bg'],$_GET['b_bg']));}
if(!isset($_GET['r_fg'])){$_GET['r_fg'] = 0;}
if(!isset($_GET['g_fg'])){$_GET['g_fg'] = 0;}
if(!isset($_GET['b_fg'])){$_GET['b_fg'] = 0;}
if(!isset($_GET['fontSize'])){$_GET['fontSize'] = 16;}
if(!isset($_GET['angle'])){$_GET['angle'] = 0;}
if(!isset($_GET['x'])){$_GET['x'] = 0;}
if(!isset($_GET['y'])){$_GET['y'] = 60;}
if(!isset($_GET['police'])){$_GET['police'] = 'candara.ttf';}
if(!isset($_GET['texte'])){ $_GET['texte'] = '';}
$couleur = imagecolorallocate($img,$_GET['r_fg'],$_GET['g_fg'],$_GET['b_fg']);
imagettftext($img,$_GET['fontSize'],$_GET['$angle'],$_GET['x'],$_GET['y'],$couleur,$_GET['police'], $_GET['texte']);
header('Content-type: image/png');
imagepng($img);
?>
Il vaut mieux limiter les formats à ceux supportés, comme ça il n'y aura pas d'erreurs php.
Cordialement
|
Membre
|
Le message d'erreur n'apparait pas, mais la page est vide !
|
Admin
|
Bonjour,
vérifie que la police 'candara.ttf' existe ou utilise une autre sans oublier de modifier le code.
Et ensuite, modifie la ligne:
if(!isset($_GET['y'])){$_GET['y'] = 60;}
par
if(!isset($_GET['y'])){$_GET['y'] = 20;}
Cordialement
|
Membre
|
candara.ttf est bien hébergée ,
Sinon le code marche , le texte , mais pas l'image , pourtant la variable $img est bien dans la barre d'adresses...
Et "image.png" est bien hébergée.
|
Membre
|
C'est pas $_GET['img'] mais $_GET['image'] dans le code. Donc remplace img= par image=
|
Membre
|
Merci ! Ca marche , topic résolu!
|
Pages: 1
|