宿州网站制作,05网伴你学,中疾控发布全国新冠感染情况,公司网站建设意见和建议说明 
视频剪辑时需要为视频添加字幕#xff0c;添加字幕方法之一#xff1a;根据字幕文本文件批量生成透明底只有字幕内容的图片文件#xff0c;如下图#xff0c;然后将这些图片文件添加到视频剪辑软件轨道中。  于是用pillow这Python图片工具库执行本次批量生成工作。 
…说明 
视频剪辑时需要为视频添加字幕添加字幕方法之一根据字幕文本文件批量生成透明底只有字幕内容的图片文件如下图然后将这些图片文件添加到视频剪辑软件轨道中。  于是用pillow这Python图片工具库执行本次批量生成工作。 
前提 
pip intall pillow 
放码 
from PIL import Image, ImageDraw, ImageFont
import osimageWidth, imageHeight  1920, 1080
fontsFolderPath  C:\\Users\\Jallen\\AppData\\Local\\Microsoft\\Windows\\Fonts
fontFilePath  os.path.join(fontsFolderPath, Alibaba-PuHuiTi-Regular.otf)def test():im  Image.new(RGBA, (imageWidth, imageHeight))draw  ImageDraw.Draw(im)text你好字体alibabaFont  ImageFont.truetype(fontFilePath, 50)textSize  alibabaFont.getsize(text)startX  (imageWidth - textSize[0]) / 2.0startY  (imageHeight - textSize[1]) / 2.0draw.text((startX, startY), text, fillwhite, fontalibabaFont, stroke_width1, stroke_fillblack)im.save(test.png)def makeImageWithOneLine(imWidth, imHeight, textY, text, imFileName, fontSize50):im  Image.new(RGBA, (imWidth, imHeight))draw  ImageDraw.Draw(im)alibabaFont  ImageFont.truetype(fontFilePath, fontSize)textSize  alibabaFont.getsize(text)startX  (imWidth - textSize[0]) / 2.0 #水平居中startY  textY#(imHeight - textSize[1]) / 2.0draw.text((startX, startY), text, fillwhite, fontalibabaFont, stroke_width1, stroke_fillblack)im.save(imFileName)def makeImageWithTwoLines(imWidth, imHeight, textY, text1, text2, imFileName, fontSize150, fontSize250):im  Image.new(RGBA, (imWidth, imHeight))draw  ImageDraw.Draw(im)alibabaFont1  ImageFont.truetype(fontFilePath, fontSize1)#如有必要可缓存起来alibabaFont2  ImageFont.truetype(fontFilePath, fontSize2)textSize1  alibabaFont1.getsize(text1)textSize2  alibabaFont2.getsize(text2)startX1  (imWidth - textSize1[0]) / 2.0 #水平居中startY1  textY#(imHeight - textSize1[1]) / 2.0startX2  (imWidth - textSize2[0]) / 2.0startY2  startY1  textSize1[1]draw.text((startX1, startY1), text1, fillwhite, fontalibabaFont1, stroke_width1, stroke_fillblack)draw.text((startX2, startY2), text2, fillwhite, fontalibabaFont2, stroke_width1, stroke_fillblack)im.save(imFileName)if  __name__  __main__:#test()inFile  open(in/a.txt, encodingutf-8)#字幕文件count  0for line in inFile.readlines():en, ch  line.split(/)print(line)#makeImageWithOneLine(imageWidth, imageHeight, 1000, en, out/subtitle_%d.png % count)makeImageWithTwoLines(imageWidth, imageHeight, imageHeight - 130, en, ch, \out/subtitle_%d.png % count, 60, 30)count  1#print(ch) 
参考 
《Python编程快速上手—让繁琐工作自动化》【PR教程】PR如何快速批量制作字幕还能实时修改Pillow doc