在 Python 如何使文本居中对齐?

In Python How can I make text's alignment center?

我是 python 的新手。我在网上找到了代码,但无法了解对齐系统的工作原理。 它从 csv 中获取名称并将其分别写入 jpg。但长名称超出屏幕,短名称不在屏幕中心。我想适应中心。对不起,我的英语不好。谢谢你的问候。

这是代码:

from PIL import Image, ImageDraw, ImageFont
import pandas as pd
import os
df = pd.read_csv('liste.csv')
font = ImageFont.truetype('font.ttf',90)
for index,j in df.iterrows():
    img = Image.open('sertifika.jpg')
    draw = ImageDraw.Draw(img)
    text_color = (17, 72, 81)
    draw.text(xy=(725,450),text='{}'.format(j['name']),fill=(0,0,0),font=font)
    img.save('sertifika/{}.jpg'.format(j['name'])) 

正如 Amin Guermazi 告诉您的那样,您在这里有答案:

Center-/middle-align text with PIL?

但我要补充一点,你最好使用 opencv 进行这种图像操作,它更快(在某种程度上)并且更容易理解。

编辑:正如 Matiiss 所提到的,这是一个使用 opencv 在图像中间显示一些文本的示例。请注意,您可以调整很多参数:


import cv2

img = cv2.imread('SimpleImage.png')

text = 'Hello World!'

font = cv2.FONT_HERSHEY_SIMPLEX
fontScale = 1
fontColor = (255,255,255)
lineType = 2

text_width, text_height = cv2.getTextSize(text, font, fontScale, lineType)[0]

CenterCoordinates = (int(img.shape[1] / 2)-int(text_width / 2), int(img.shape[0] / 2) - int(text_height / 2))

cv2.putText(img, text, CenterCoordinates, font, fontScale, fontColor, lineType)

cv2.imshow('image',img)

cv2.waitKey(0)
cv2.destroyAllWindows()