脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - Python批量生成字幕图片的方法详解

Python批量生成字幕图片的方法详解

2023-02-15 14:02巨輪 Python

这篇文章主要为大家详细介绍了如何利用Python语言实现批量生成字幕图片用于视频剪辑,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下

说明

视频剪辑时需要为视频添加字幕,添加字幕方法之一:根据字幕文本文件批量生成透明底只有字幕内容的图片文件,如下图,然后将这些图片文件添加到视频剪辑软件轨道中。

Python批量生成字幕图片的方法详解

于是用pillow这Python图片工具库执行本次批量生成工作。

前提

?
1
pip intall pillow

放码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from PIL import Image, ImageDraw, ImageFont
import os
 
imageWidth, 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.0
    startY = (imageHeight - textSize[1]) / 2.0
 
    draw.text((startX, startY), text, fill='white', font=alibabaFont, stroke_width=1, stroke_fill='black')
    im.save('test.png')
 
def makeImageWithOneLine(imWidth, imHeight, textY, text, imFileName, fontSize=50):
    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.0
 
    draw.text((startX, startY), text, fill='white', font=alibabaFont, stroke_width=1, stroke_fill='black')
    im.save(imFileName)
 
 
def makeImageWithTwoLines(imWidth, imHeight, textY, text1, text2, imFileName, fontSize1=50, fontSize2=50):
    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.0
    
    startX2 = (imWidth - textSize2[0]) / 2.0
    startY2 = startY1 + textSize1[1]
 
    draw.text((startX1, startY1), text1, fill='white', font=alibabaFont1, stroke_width=1, stroke_fill='black')
    draw.text((startX2, startY2), text2, fill='white', font=alibabaFont2, stroke_width=1, stroke_fill='black')
    
    im.save(imFileName)
 
if  __name__ == '__main__':
    #test()
    inFile = open("in/a.txt", encoding="utf-8")#字幕文件
    count = 0
    for 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批量生成字幕图片的方法详解的文章就介绍到这了,更多相关Python字幕图片内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/u011863024/article/details/124893579

延伸 · 阅读

精彩推荐
  • PythonPython时间转化方法超全总结

    Python时间转化方法超全总结

    在生活和工作中,我们每个人每天都在和时间打交道。本文就为大家总结了Python实现时间转化的多种方法,快来跟随小编一起学习一下吧...

    Python编程时光7252022-11-12
  • PythonPython实现信用卡系统(支持购物、转账、存取钱)

    Python实现信用卡系统(支持购物、转账、存取钱)

    这篇文章主要介绍了Python实现信用卡系统(支持购物、转账、存取钱)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...

    战神王恒2852020-08-29
  • Pythonpython数据分析apply(),map(),applymap()用法

    python数据分析apply(),map(),applymap()用法

    这篇文章主要介绍了python数据分析apply(),map(),applymap()用法,可以方便地实现对批量数据的自定义操作。用法归纳如下,需要的朋友可以参考一下...

    侯小啾8642022-10-24
  • Python微软工程师用PyTorch实现图注意力网络,可视化效果惊艳

    微软工程师用PyTorch实现图注意力网络,可视化效果惊艳

    近日,一个关于图注意力网络可视化的项目吸引了大批研究人员的兴趣,上线仅仅一天,收获 200+ 星。该项目是关于用 PyTorch 实现的图注意力网络(GAT),包...

    机器之心Pro15252021-02-02
  • PythonPython实现矩阵转置的方法分析

    Python实现矩阵转置的方法分析

    这篇文章主要介绍了Python实现矩阵转置的方法,结合实例形式较为详细的分析了Python实现矩阵转置的相关操作技巧,需要的朋友可以参考下...

    _小苹果8602020-12-20
  • PythonPython内置函数详细解析

    Python内置函数详细解析

    这篇文章主要介绍了Python内置函数详细解析,Python 自带了很多的内置函数,极大地方便了我们的开发,下文小编总结了一些内置函数的相关内容,需要的小...

    编程学习网3762022-12-29
  • Pythonpython中的二维列表实例详解

    python中的二维列表实例详解

    这篇文章主要介绍了python中的二维列表实例详解,文中给大家介绍了python 二维列表按列取元素的方法,需要的朋友可以参考下...

    xiaotao_110952021-03-06
  • Python详解Python中的条件判断语句

    详解Python中的条件判断语句

    这篇文章主要介绍了Python中的条件判断语句,是Python入门中的基础知识,需要的朋友可以参考下 ...

    脚本之家10432020-06-28