OVH Cloud OVH Cloud

[GD::Font->load] Out of memory ?

3 réponses
Avatar
Jul
Bonjour,

Sur mon hébergement mutualisé chez OVH (720plan), j'ai installé la
version 2.23 de GD.pm avec gd-2.0.33 et freetype-2.1.9.
Une des utilités de cette installation était de pouvoir générer des
boutons à la volée sans avoir besoin pour l'administrateur de contenu
d'uploader chacun d'eux sur le serveur...

Les tests généraux de GD.pm se sont montrés positifs (importation,
exportation d'images sans problème), idem pour l'utilisation de la
fonction GD::Image->string().

J'ai donc essayé de charger une police au format TTF sur le serveur
pour passer aux choses sérieuses et dès que je la charge dans le
script, j'ai une petite phrase qui s'affiche : "Out of memory!" et le
script s'arrête...

Ce qui est vraiment étrange, c'est que ça fait plus d'une erreur que
j'ai commencé ce test, que cette erreur s'est affichée, et je n'ai
toujours pas eu de mail de la part de O'killer me disant que j'ai une
consommation des ressources excessive!

Quelqu'un aurait-il une idée sur ce problème ?
Et si l'un d'entre vous (de préférence non exclusive chez le même
hébergeur et en mutualisé) a réussi à charger des polices TrueType pour
les dessiner, je serai ravi d'avoir un bilan de la configuration
logicielle : il me faut peut-être downgrader les versions.

Merci de votre aide :)




#================ Test GD::Font ===================
#!/usr/bin/perl -w
#use strict;
use lib qw(/home/tabouedi/local/lib/perl5/site_perl);

use CGI::Carp qw(fatalsToBrowser);
use GD;

print "Content-Type: image/png\n\n";

$im = new GD::Image(100,100, 1);
$white = $im->colorAllocate(255,255,255);
$im->fill(0,0,$white);
$black = $im->colorAllocate(0,0,0);
# Ici, je ne reçois même pas le message de die.
# Si je supprime les deux lignes suivantes, tout roule mais sans
texte.
$font = GD::Font->load("./ARCHITEC.TTF") || die "can'tload font: $!";
$im->string($font,2,10,"test!",$black);

print $im->png;

--
Jul... réapparru comme par enchantement

3 réponses

Avatar
Jul
C'est re moi
Alors finallement, je viens de me rendre compte qu'on n'avait pas
besoin de GD::Font->load()... il va falloir que je décortique un peut
ce côté de GD.pm pour comprendre à quoi ça sert ^^
Donc voilà le code-exemple corrigé pour qu'il n'y ait plus d'erreur de
mémoire :
(désolé pour le manque de déclaration, je comprends pas comment on doit
les faire avec Perl-5.005 et "our" retourne une jolie erreur :o) )

#================ Test GD::Font ================== #!/usr/bin/perl -w
#use strict;
use lib qw(/home/tabouedi/local/lib/perl5/site_perl);

use CGI::Carp qw(fatalsToBrowser);
use GD;

print "Content-Type: image/pngnn";

$im = new GD::Image(100,100, 1);
$white = $im->colorAllocate(255,255,255);
$im->fill(0,0,$white);
$black = $im->colorAllocate(0,0,0);
# On supprime cette ligne qui encombre la mémoire d'une manière
encore inconnue
#$font = GD::Font->load("./ARCHITEC.TTF") || die "can'tload font: $!";
# On dessine une chaîne stringFT au lieu de string tout court
$font = "./ARCHITEC.TTF";
$font_size = 12;
$string_left = 10;
$string_top = 2;
$font_angle= 0;
$string_color = $black;
$string = "Test!";
$im->stringFT($font_color, $font, $font_size, $font_angle, $font_left,
$font_right, $string);

print $im->png;

#=================================================

Mais n'empêche que je sais toujours pas pourquoi GD::Font->load()
provoque un out of memory :o)


Julien

--
Jul... réapparru comme par enchantement
Avatar
Jacques Caron
Salut,

On Fri, 25 Mar 2005 23:23:16 +0100, Jul wrote:

Alors finallement, je viens de me rendre compte qu'on n'avait pas besoin
de GD::Font->load()... il va falloir que je décortique un peut ce côté
de GD.pm pour comprendre à quoi ça sert ^^


A priori GD::Font c'est pour des fontes bitmap au format GD, qui seront
utilisées par ->string, alors que pour les fontes TTF on utilise
->stringFT qui se débrouille tout seul.

Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/

Avatar
Jul
Jacques Caron a émis l'idée suivante :
Salut,

On Fri, 25 Mar 2005 23:23:16 +0100, Jul wrote:

Alors finallement, je viens de me rendre compte qu'on n'avait pas besoin
de GD::Font->load()... il va falloir que je décortique un peut ce côté de
GD.pm pour comprendre à quoi ça sert ^^


A priori GD::Font c'est pour des fontes bitmap au format GD, qui seront
utilisées par ->string, alors que pour les fontes TTF on utilise ->stringFT
qui se débrouille tout seul.

Jacques.


Effectivement, en révisant la doc, l'extention du fichier pointé est
.fnt, mais je n'ai jamais vu ni entendu parler de ce format.
Merci, je me renseignerai à ce sujet :)


Julien

--
Jul... réapparru comme par enchantement