Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Insérer une image externe dans une image GD

6 réponses
Avatar
genomart
Bonjour,

Je souhaite cr=E9er une image =E0 l'aide du module GD.

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

Je souhaiterai aussi que la police de mon texte soit plus grande que celle =
propos=E9e par le module GD, comment faire ?
Si je r=E9cup=E8re un fichier ttf sur mon PC Windows pour le font, mon prog=
ramme pourra t-il fonctionner si j'ex=E9cute le programme =E9galement sous =
Linux ou MAC avec ce m=EAme fichier ttf ?

Merci

6 réponses

Avatar
Nicolas George
, dans le message
, a
écrit :
Je souhaite créer une image à l'aide du module GD.



Pourquoi spécifiquement GD ?
Avatar
genomart
Le mardi 13 mars 2012 17:33:08 UTC+1, Nicolas George a écrit :
, a
é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.
Avatar
Paul Gaborit
À (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 - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Avatar
genomart
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
Avatar
Jean-Louis Morel
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
Avatar
genomart
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 !!