python怎么制作文字?
總結文字特效的特點是,每個文字獨立運動,都符合同一個運動規律,但每個文字之間保持一個固定的時間差。每個字的運動可以分成三個部分,字體大小的變化、文字位置的變化、文字顏色(透明度)的變化。
# 把每個文字與它的三個運動結合為一個基本單位
def newTextMotion(char, posFunc, sizeFunc, colorFunc):
tm={}
tm['char']=char
tm['posFunc']= posFunc
tm['sizeFunc']= sizeFunc
tm['colorFunc']= colorFunc
return tm
1
2
3
4
5
6
7
8
文字動效的展示
在任意一個時間點上,獲得文字的顯示效果。
# 在指定的時間,計算文字的位置、大小、顏色等
def showText(img, textMotion, time):
char= textMotion['char']
pos= textMotion['posFunc'](time)
size= textMotion['sizeFunc'](time)
color= textMotion['colorFunc'](time)
font= ImageFont.truetype(fontName, size)
draw = ImageDraw.Draw(im=img)
textSize= draw.textsize(text=char, font=font)
tx= pos[0]- textSize[0]// 2
ty= pos[1]- textSize[1]// 2
draw.text(xy=(tx, ty), text=char, fill=color, font=font)
1
2
3
4
5
6
7
8
9
10
11
12
針對一組文字,形成一個列表,獲取起每個時間點的顯示圖,作為一幀
def getTextFrame(tmList, time):
textImg= Image.new('RGBA', (1280, 720))
for tm in tmList:
showText(textImg, tm, time)
return textImg