Méthode Pillow ImageDraw textbbox()
textbbox()La méthode estImageDrawune fonctionnalité très pratique du module, utilisée pour calculer la boîte englobante occupée par le texte donné lorsqu'il est dessiné sur une image.
textbbox()La méthode ne dessine pas réellement le texte, mais renvoie les coordonnées de la zone rectangulaire que le texte occupera.
Syntaxe de la méthode
textbbox(xy, text, font=None, anchor=None, spacing=4, align="left", direction=None, features=None, language=None, stroke_width=0)
Détails des paramètres
1. xy (Obligatoire)
- Type: tuple (x, y)
- Description: Spécifie la position de coordonnée de départ du texte
- Remarque: La position réelle du texte est également affectée par le
anchorparamètre.
2. text (Obligatoire)
- Type: string
- Description: Le contenu textuel pour lequel la boîte englobante doit être calculée
3. font (Facultatif)
- Type:
ImageFont: objet - Valeur par défaut: None (utilise la police par défaut)
- Description: Spécifie la police utilisée pour le texte
4. anchor (facultatif)
- Type: string
- Valeur par défaut: None (équivalent à "la")
- Description: Contrôle l'alignement du texte par rapport aux coordonnées xy
- Valeurs courantes:
- "la" : aligné à gauche, aligné sur la ligne de base (par défaut)
- "lt" : aligné à gauche, aligné en haut
- "ma" : aligné au centre, aligné sur la ligne de base
- "mm" : entièrement centré (horizontalement et verticalement)
5. spacing (facultatif)
- Type: entier
- Valeur par défaut: 4
- Description: Interligne pour texte multiligne
6. align (Facultatif)
- Type: string
- Valeur par défaut: "left"
- Description: Alignement du texte multiligne ("left", "center", "right")
7-10. Autres paramètres avancés
direction,features,language,stroke_widthDes paramètres comme ceux-ci contrôlent des fonctionnalités avancées de rendu de texte ; les débutants n'ont généralement pas besoin de les maîtriser immédiatement.
Valeur de retour
textbboxLa méthode renvoie un 4-uplet(left, top, right, bottom), représentant les coordonnées de la boîte englobante du texte.
Exemples d'applications pratiques
Exemple 1 : Utilisation de base
Exemple
# Créer une image vide
image = Image.new('RGB', (400, 200), 'white')
draw = ImageDraw.Draw(image)
# Charger la police
font = ImageFont.truetype('arial.ttf', 24)
# Calculer la boîte englobante du texte
bbox = draw.textbbox((50, 50), "Bonjour Pillow !", font=font)
print("Boîte englobante du texte :", bbox) # Sortie : (gauche, haut, droite, bas)
# Dessiner la boîte englobante (visualisation)
draw.rectangle(bbox, outline='red')
# Dessiner réellement le texte
draw.text((50, 50), "Hello Pillow!", font=font, fill='black')
image.show()
Exemple 2 : Utilisation du paramètre anchor
Exemple
# Coordonnées du point central
center_x, center_y = 200, 100
# Calculer la boîte englobante du texte aligné au centre
bbox = draw.textbbox((center_x, center_y), "Centré", font=font, anchor="mm")
print("Boîte englobante alignée au centre :", bbox)
# Dessiner le point central et la boîte englobante
draw.rectangle(bbox, outline='blue')
draw.ellipse([(center_x-2, center_y-2), (center_x+2, center_y+2)], fill='green')
# Dessiner le texte
draw.text((center_x, center_y), "Centré", font=font, fill='black', anchor="mm")
image.show()
Scénarios d'application courants
- Calcul de la disposition du texte: Déterminer l'espace qu'il occupe avant de dessiner le texte
- Retour automatique à la ligne: Calculer la façon dont le texte passe à la ligne en fonction de la largeur disponible
- Centrage du texte: Obtenir un centrage précis en combinant les calculs de boîte englobante
- Détection de collisions: Éviter le chevauchement du texte avec d'autres éléments
Notes
- Impact de la police: Différentes polices peuvent renvoyer des tailles de boîte englobante très différentes
- Texte multiligne: Pour un texte multiligne, la boîte englobante inclut la zone de toutes les lignes
- Considérations de performance: Des appels fréquents peuvent affecter les performances ; il est recommandé de mettre en cache les résultats
- Précision: Le calcul de la boîte englobante est approximatif ; le rendu réel peut différer légèrement
Comparaison avec textsize
Dans les anciennes versions de Pillow, la méthode couramment utiliséetextsizeméthode pour obtenir la taille du texte, mais cette méthode a été dépréciée.textbboxIl fournit des informations plus précises (incluant non seulement la largeur et la hauteur, mais aussi des informations de position), ce qui en fait la méthode préférée pour le nouveau code.
Exemple
width, height = draw.textsize("Text", font=font)
# Nouvelle méthode (recommandée)
left, top, right, bottom = draw.textbbox((0, 0), "Text", font=font)
width = right - left
height = bottom - top
Résumé
ImageDraw.textbboxLa méthode est un outil puissant et pratique de la bibliothèque Pillow, particulièrement adapté aux scénarios nécessitant un contrôle précis de la mise en page du texte. En comprenant ses paramètres et ses valeurs de retour, les développeurs peuvent facilement mettre en œuvre diverses exigences complexes de mise en page de texte.