视频直播源码,插入图片、删除图片、设置图片大小、提取图片
1.插入图片
Document对象有一个add_paragraph()方法插入图片,只需要传入路径或者字节流即可,实际上它也是调用段落的Run对象的add_picture()
from docx import Document
doc = Document()
doc.add_paragraph("在下面插入一张图片")
doc.add_picture("./01.png") # 等同于doc.add_paragraph().add_run().add_picture()
doc.save('./test.docx')
插入的图片被保存为一个type为3的InlineShape对象,InlineShape还有其他常用类型如下
CHART = 12
LINKED_PICTURE = 4
PICTURE = 3
SMART_ART = 15
NOT_IMPLEMENTED = -6
我们可以通过Document对象的inline_shapes()获取所有InlineShape
doc = Document()
doc.add_paragraph("在下面插入一张图片")
doc.add_picture("./01.png")
print(doc.inline_shapes)
print(doc.inline_shapes[0].type) # 图片的type=3
2.删除图片
图片是保存在段落中的,所以我们需要清空有图片的那个段落即可
doc = Document()
doc.add_paragraph("在下面插入一张图片")
doc.add_picture("./01.png")
# 此处是第2个段落有图片
doc.paragraphs[1].clear()
print(doc.inline_shapes)
3.调整图片大小
在插入图片的时候可以顺便指定宽度(width)和高度(height),若都不指定则是原图大小,若只指定了一个则等比缩放,当然宽度和高度属性也可以直接获取和修改。另外,插入的图片默认dpi=72
from docx import Document
from docx.shared import Cm, Inches
doc = Document()
doc.add_paragraph("在下面插入一张图片")
picture = doc.add_picture("./01.png", width=Cm(5)) # 插入图片时指定大小为5cm
# 查看尺寸
print(picture.width.cm) # 5.0
print(picture.height.cm) # 5.403397222222222
# 修改尺寸
picture.width = Inches(3.6) # 图片宽度改为3.6英尺,但注意是否被拉伸,如果不行被拉伸请自己计算长宽比
picture.width = int(picture.width * 0.50) # 宽度缩放为原来的50%
picture.height = int(picture.height * 0.50) # 高度缩放为原来的50%
doc.save('./test.docx')
4.图片对齐
因为图片是在段落里的,所以我们只需要对所在段落对齐即可
from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
doc = Document()
doc.add_paragraph("在下面插入一张图片")
picture = doc.add_picture("./01.png")
doc.paragraphs[1].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 居中对齐
# WD_PARAGRAPH_ALIGNMENT.LEFT: 左对齐
# WD_PARAGRAPH_ALIGNMENT.CENTER: 居中对齐
# WD_PARAGRAPH_ALIGNMENT.RIGHT: 右对齐
# WD_PARAGRAPH_ALIGNMENT.JUSTIFY: 两端对齐
# WD_PARAGRAPH_ALIGNMENT.DISTRIBUTE: 分散对齐
doc.save('./test.docx')
5.提取图片
python-docx没有提供提取图片的功能,但part对象提供了related_parts(),我们可以通过这个方法用图片id获取图片,图片id我们可以通过xpath从xlm文档中提取(使用解压软件解压Word文档即可得到xlm文件)。下面的代码仅供参考
from os.path import basename
from docx import Document, ImagePart
doc = Document("./test.docx")
for p in doc.paragraphs:
images = p._element.xpath('.//pic:pic') # 获取所有图片
for image in images:
for img_id in image.xpath('.//a:blip/@r:embed'): # 获取图片id
part = doc.part.related_parts[img_id] # 根据图片id获取对应的图片
if isinstance(part, ImagePart):
# 保存图片
with open(basename(part.partname), "wb") as f:
f.write(part.blob)、
以上就是 视频直播源码,插入图片、删除图片、设置图片大小、提取图片,更多内容欢迎关注之后的文章
标签:picture,docx,doc,插入,add,源码,图片大小,图片 From: https://www.cnblogs.com/yunbaomengnan/p/16771963.html