批量压缩图片
实现代码:
# 将图片按修改时间排序(这样才能与图片的描述一致),将路径存入列表,以便后面逐个插入图片时调用
import os
from PIL import Image
from docx import Document
path = "6s_pictures"
list_p = [path + "\\" + i for i in os.listdir(path)] # 获取图片的文件名,并拼接完整路径
list_p.sort(key=lambda path: os.path.getmtime(path)) # 将列表中的文件按其修改时间排序,os.path.getmtime() 函数是获取文件最后修改时间
print(list_p)
# 按比例缩小图片尺寸
for infile in list_p:
im = Image.open(infile)
(x, y) = im.size # 读取图片尺寸(像素)
x_s = 165 # 定义缩小后的标准宽度
y_s = int(y * x_s / x) # 基于标准宽度计算缩小后的高度
out = im.resize((x_s, y_s), Image.ANTIALIAS) # 改变尺寸,保持图片高品质
out.save(r"6s_pictures_new\{}".format(infile.split("\\")[-1]))
path = "6s_pictures_new"
list_p = [path + "\\" + i for i in os.listdir(path)] # 获取图片的文件名,并拼接完整路径
list_p.sort(key=lambda path: os.path.getmtime(path)) # 将列表中的文件按其修改时间排序,os.path.getmtime() 函数是获取文件最后修改时间
doc = Document("6S稽查问题模板.docx")
table = doc.tables[0] # 已确定是第一个表格,其索引是0
# 增加需要的行,以便足够填入数据
for i in range(len(list_p) - 1):
table.add_row()
# 写入数据及图片
for row in range(1, len(list_p) + 1):
# 插入图片
run = table.cell(row, 2).paragraphs[0].add_run() # 新增一个文字块
picture = run.add_picture(list_p[row - 1]) # 插入图片
doc.save("6S稽查问题.docx")