2009-06-16 7 views
0

J'utilise GD pour générer des images à la volée pour les images de titre sur la page. Il y a plus de 100 images générées en ce moment, dont la grande majorité fonctionne très bien.Bogue générateur d'image GD

Récemment nous avons trouvé que certains titres cassaient la création d'image où un grand espace horizontal était inséré entre 2 caractères.

La police utilisée pour la génération d'image est Interstate, et voici quelques exemples de titres qui fonctionnent, ainsi qu'un exemple d'une police cassée. Dans le cas du titre brisé, ce sont les caractères "JB" proches l'un de l'autre qui l'ont cassé. En retournant les caractères ou en ayant un nombre quelconque de caractères entre eux, l'image est générée correctement. Comme vous pouvez le voir dans les exemples, les titres fonctionnent avec des parties courtes et longues du texte, c'est juste un exemple qui le brise jusqu'à présent, commençant vraiment à me dérouter et à suspecter un bug dans le fichier de police ou GD , Aucune suggestion?

alt text http://far.id.au/jkf/so/jb.png alt text http://far.id.au/jkf/so/bj.png alt text http://far.id.au/jkf/so/cheesecake.png alt text http://far.id.au/jkf/so/blah.png

code:

private function GenerateImage() 
{ 
    $height = 31; 
    $width = $this->Width; 

    $x = 10; 
    $y = 20; 

    $font_size = 10; 

    $text_colours = $this->ToRGB($this->TextColour); 
    $background_colours = $this->ToRGB($this->BackgroundColour); 

    $image = imagecreatetruecolor($width,$height); 

    $fg_color = imagecolorallocate($image,$text_colours[0],$text_colours[1],$text_colours[2]); 
    $bg_color = imagecolorallocate($image,$background_colours[0],$background_colours[1],$background_colours[2]); 

    imagefill($image,0,0,$bg_color); 

    imagettftext($image,$font_size,0,$x,$y,$fg_color,$this->Font,strtoupper($this->Title)); 

    return imagepng($image,$this->FilePath,9); 
} 
+0

Sans code réel, il est surtout deviner. – Ikke

+0

Mon mauvais, destiné à télécharger la fonction, il est là maintenant. – Simon

+0

Si vous utilisez une police différente, quelque chose de commun comme arial, cela fonctionne-t-il correctement? –

Répondre

0

police Corrupt était à blâmer