Insérer une image externe dans une image GD

Le
genomart
Bonjour,

Je souhaite créer une image à l'aide du module GD.

Je souhaiterai écrire du texte dans l'image mais aussi insérer une imag=
e externe dans l'image, comment faire ? Avez-vous une parade ou une idée =
?

Je souhaiterai aussi que la police de mon texte soit plus grande que celle =
proposée par le module GD, comment faire ?
Si je récupère un fichier ttf sur mon PC Windows pour le font, mon prog=
ramme pourra t-il fonctionner si j'exécute le programme également sous =
Linux ou MAC avec ce même fichier ttf ?

Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #24320991
, dans le message
écrit :
Je souhaite créer une image à l'aide du module GD.



Pourquoi spécifiquement GD ?
genomart
Le #24321501
Le mardi 13 mars 2012 17:33:08 UTC+1, Nicolas George a écrit :
écrit :
> Je souhaite créer une image à l'aide du module GD.

Pourquoi spécifiquement GD ?



Car c'est un module simple à installer en automatique sur différentes p late-formes. Je sais qu'avec Image::Magick, je pouvais faire ce que je voul ais, mais pour cette fois-ci, ça ne m'arrange pas.

Je pense avoir trouvé ma solution en utilisant les constructeurs newFromP ng ou newFromJpeg qui permettent de créer un objet GD à partir de fichi ers externes. Ensuite, je peux travailler dessus ou les utiliser à ma con venance.
Il me reste mon interrogation sur les polices.
Paul Gaborit
Le #24321871
À (at) Tue, 13 Mar 2012 09:16:43 -0700 (PDT),
écrivait (wrote):

Je souhaite créer une image à l'aide du module GD.

Je souhaiterai écrire du texte dans l'image mais aussi insérer une
image externe dans l'image, comment faire ? Avez-vous une parade ou
une idée ?



Pour insérer une image dans une autre, la méthode 'copy' (ou l'une de
ses variantes telles que copyResized, copyMerge, copyRotated...) est
parfaite.

Je souhaiterai aussi que la police de mon texte soit plus grande que
celle proposée par le module GD, comment faire ?



Choisir une autre police que la police par défaut (de préférence, une
police TrueType pour pouvoir choisir n'importe quelle taille).

Si je récupère un fichier ttf sur mon PC Windows pour le font, mon
programme pourra t-il fonctionner si j'exécute le programme également
sous Linux ou MAC avec ce même fichier ttf ?



Un fichier ttf (TrueType) est utilisable sur n'importe quel système (si
sa licence vous l'autorise).

--
Paul Gaborit - Perl en français -
genomart
Le #24322621
Pour insérer une image dans une autre, la méthode 'copy' (ou l'une de
ses variantes telles que copyResized, copyMerge, copyRotated...) est
parfaite.


Ok, mais il faut que l'image soit de type GD, donc je pense qu'il faille d' abord l'importer avec les méthodes newFromPng, newFromJpeg...


Choisir une autre police que la police par défaut (de préférence, u ne
police TrueType pour pouvoir choisir n'importe quelle taille).



Oui mais comment, la fonction load du module GD ne fonctionne pas (GD::Font ->load) ça génère systématiquement un out of memory.

J'ai testé stringFT, mais perl arrête incessamment de fonctionner, je n e sais pas pourquoi.

Autre souci, les textes accentués ne passent pas. Vu que je récupère automatiquement les textes, qu'elle est l'encodage du texte dans le module GD afin que je puisse gérer cela facilement.

Merci d'avance
Jean-Louis Morel
Le #24331241
Le 14/03/2012 11:55, a écrit :
Choisir une autre police que la police par défaut (de préférence, une
police TrueType pour pouvoir choisir n'importe quelle taille).



Oui mais comment, la fonction load du module GD ne fonctionne pas (GD::Font->load) ça génère systématiquement un out of memory.

J'ai testé stringFT, mais perl arrête incessamment de fonctionner, je ne sais pas pourquoi.

Autre souci, les textes accentués ne passent pas. Vu que je récupère automatiquement les textes, qu'elle est l'encodage du texte dans le module GD afin que je puisse gérer cela facilement.




D'après la doc, la bibliothèque gd utilise utf8 comme codage pour les
caractères.

Est-ce que le script suivant vous donne une image png avec le texte en
Arial 24pt en rouge avec les caractères accentués et une inclinaison de
30° ?

#!/usr/bin/perl
use strict;
use warnings;
use GD;
use GD::Text::Align;

GD::Text->font_path('C:/Windows/Fonts'); # Répertoire des fontes ttf
my $PI = 3.1415926;

my $gd = GD::Image->new(800,600);

my $white = $gd->colorAllocate(255,255,255);
my $red = $gd->colorAllocate(255,0,0);
my $black = $gd->colorAllocate(0,0,0);

my $align = GD::Text::Align->new($gd,
valign => 'top',
halign => 'left',
color => $red,
text => 'Caractères accentués é ç à è ù ê ü ï É Ç À È Ù Ê Ü Ï',
font => 'Arial',
ptsize => 24,
);

$align->draw(50, 500, $PI/6);

open my $IMG, '>', "img.png" or die $!;
binmode $IMG;
print $IMG $gd->png();
close $IMG;

__END__

HTH

--
J-L
http://www.bribes.org/perl
genomart
Le #24336901
Merci Jean-Louis,

Je me suis tourné sur l'utilisation du module GD::Text::Align, et surtout GD::Text::Wrap et c'est parfait.
Il faut que la doc du module GD soit remise à jour car sur ce point d'uti lisation des fontes, ce n'est pas terrible.

Sympa !!
Publicité
Poster une réponse
Anonyme