汕头网站建设推广,交换链接网站,网站开发需要准备什么材料,敲代码做网站多少钱说明
视频剪辑时需要为视频添加字幕#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