2010-05-15 3 views
1

J'ai une fonction qui accepte une police (fichier ttf ou otf) et génère une image de texte dans différentes polices. Le problème que j'ai est d'essayer de trouver comment je peux adapter le texte dans l'image indépendamment de la taille de police, du type de police, et de la quantité de texte.Ajustement du texte dans une image

J'ai essayé de rendre le rectangle de l'image variable afin qu'il contienne le texte de différentes polices sans couper un peu de texte car l'image n'est pas longue ou assez large.

Voici la fonction que j'ai actuellement, j'ai essayé d'utiliser le nombre de caractères pour déterminer la largeur de l'image, mais dans certains cas, pour certaines polices et tailles, il est toujours coupé.

function generate_image($save_path, $text, $font_path){ 

    $length = strlen($text) * 15; 

    // Create the image 
    $im = imagecreatetruecolor($length, 40); 

    $white = imagecolorallocate($im, 255, 255, 255); 
    $grey = imagecolorallocate($im, 128, 128, 128); 
    $black = imagecolorallocate($im, 0, 0, 0); 

    imagefilledrectangle($im, 0, 0, $length, 40, $white); 

    $font = $font_path; 

    imagettftext($im, 30, 0, 0, 25, $black, $font, $text); 

    if(imagepng($im, $save_path)){ 

     $status = true; 

    }else{ 

     $status = false; 

    } 

    imagedestroy($im); 

    return $status; 

} 

Merci à tous pour toute aide

Répondre

3
+0

Je devine que cela ne fonctionnera pas pour les FEO types de polices, juste TTF? Comment ferais-je pour mettre en place une fonction similaire? – Abs

+1

Si imagettftext() fonctionne aussi bien pour les polices opentype que pour ttf, je m'attendrais à ce que imagettfbbox() fonctionne aussi, étant donné que otf est une extension de ttf. –