
背景需求
领导要下载党课PPT

打开一看,没有链接地址,但是PPT的每页图片

很多人有下载需求,找不到下载路径

我决定下载公众号的图片,编号。然后用Python来生成给一个PPT
第一步:用UIBOT下载PPTX的每一张图片(间隔等待时间不同)

Dim sRet,temp,sPath,sText,bRet,objPoint,dRet,iRet
Rem 找到第一张图片并点击打开
Rem 另存一次指定路径
Rem 右箭头换下一张,准备下载
Rem 预估张数,宁多不要少
name=Dialog.InputBox("文件夹名称","Laiye Automation","",false)
File.CreateFolder('''C:\Users\jg2yXRZ\OneDrive\桌面\'''&name)
sPath = File.ParentPath('''C:\Users\jg2yXRZ\OneDrive\桌面\'''&name)
TracePrint(sPath+'\\'+name)
路径 = sPath+'\\'+name
For a = 0 To 0 step 1
随机秒数=Rnd()
随机间 = 随机秒数*1000
随机间隔秒=CInt(随机间)
TracePrint(随机间隔秒)
Mouse.Move(954, 519, false,{"iDelayAfter": 100, "iDelayBefore": 100})
Mouse.Click("right", "click", [],{"iDelayAfter": 100, "iDelayBefore": 100})
Mouse.Move(1000, 569, false,{"iDelayAfter": 100, "iDelayBefore": 100})
Mouse.Click("left", "click", [],{"iDelayAfter": 100, "iDelayBefore": 100})
Delay(随机间隔秒)
Mouse.Move(782, 215, false,{"iDelayAfter": 100, "iDelayBefore": 100})
Mouse.Click("left", "click", [],{"iDelayAfter": 100, "iDelayBefore": 100})
Keyboard.Input(路径,{"iDelayAfter": 100, "iDelayBefore": 100, "sSimulate": "message"})
Keyboard.Press("Enter", "press", [],{"iDelayAfter": 300, "iDelayBefore": 200, "sSimulate": "simulate"})
Delay(随机间隔秒)
Keyboard.InputText(@ui"窗口_微信图片_20240518195628.jpg","001",true,20,10000,{"bContinueOnError": false, "iDelayAfter": 300, "iDelayBefore": 500, "bSetForeground": true, "sSimulate": "message", "bValidate": false, "bClickBeforeInput": false})
Delay(随机间隔秒)
Mouse.Action(@ui"窗口_保存(S)2","left","click",10000,{"bContinueOnError": false, "iDelayAfter": 100, "iDelayBefore": 100, "bSetForeground": true, "sCursorPosition": "Center", "iCursorOffsetX": 0, "iCursorOffsetY": 0, "sKeyModifiers": [],"sSimulate": "simulate", "bMoveSmoothly": false})
Keyboard.Press("Right", "press", [],{"iDelayAfter": 100, "iDelayBefore": 100, "sSimulate": "simulate"})
Next
For i = 2 To 100 step 1
// objPoint = LocalOCR.Find(@ui"窗口_桌面1", {"x":0,"y":0,"width":0,"height":0},"", "instr", 1, 10000, {"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":true})
// bRet = Text.Exists(@ui"窗格2","已是最后一张","instr",1,10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":true})
// If bRet=1
// Break
// ElseIf bRet=1
// End If
Mouse.Move(954, 519, false,{"iDelayAfter": 100, "iDelayBefore": 100})
Mouse.Click("right", "click", [],{"iDelayAfter": 100, "iDelayBefore": 100})
Mouse.Move(1000, 569, false,{"iDelayAfter": 100, "iDelayBefore": 100})
Mouse.Click("left", "click", [],{"iDelayAfter": 100, "iDelayBefore": 100})
Delay(3000)
Keyboard.Input(Format("%03d",i),{"iDelayAfter": 300, "iDelayBefore": 200, "sSimulate": "message"})
Delay(随机间隔秒)
Mouse.Action(@ui"窗口_保存(S)2","left","click",10000,{"bContinueOnError": false, "iDelayAfter": 100, "iDelayBefore": 100, "bSetForeground": true, "sCursorPosition": "Center", "iCursorOffsetX": 0, "iCursorOffsetY": 0, "sKeyModifiers": [],"sSimulate": "simulate", "bMoveSmoothly": false})
Keyboard.Press("Right", "press", [],{"iDelayAfter": 100, "iDelayBefore": 100, "sSimulate": "simulate"})
Next

第二步:用deepseek写一个Python制作PPTX的代码
测试一:用手动-插入相册的方法制作PPTX。会生成两个PPTX,要删除和修改文件名、但是插入的图片是满格16:9的


测试二:如果没有说明设置16:9的比例,并且撑满画面,PPT就默认4:3,插入图片是原始大小


测试三:说明PPT是16:9,且插入图片必须撑满画布

最终代码展示
'''
下载微信公众号图片,用Python代码直接导入PPTX 16:9
deepseek、阿夏
20250403
'''
import os
from pptx import Presentation
from pptx.util import Inches
from PIL import Image
def create_ppt_from_images(folder_path, output_pptx):
# 创建一个16:9的演示文稿
prs = Presentation()
prs.slide_width = Inches(10) # 16:9的宽度
prs.slide_height = Inches(5.625) # 16:9的高度
# 获取文件夹中的所有图片文件
image_files = [f for f in os.listdir(folder_path)
if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif'))]
if not image_files:
print(f"在文件夹 {folder_path} 中没有找到图片文件")
return
for img_file in image_files:
img_path = os.path.join(folder_path, img_file)
try:
# 使用PIL检查图片是否有效
with Image.open(img_path) as img:
# 添加一个空白幻灯片
slide = prs.slides.add_slide(prs.slide_layouts[6]) # 使用空白布局
# 插入图片并使其填满整个幻灯片
left = top = 0
pic = slide.shapes.add_picture(img_path, left, top,
width=prs.slide_width,
height=prs.slide_height)
except Exception as e:
print(f"无法处理图片 {img_file}: {e}")
continue
# 保存PPTX文件
prs.save(output_pptx)
print(f"成功创建PPTX文件: {output_pptx},包含 {len(image_files)} 张图片")
# 使用示例
path = r'C:\Users\jg2yXRZ\OneDrive\桌面\123'
folder_path = path+r'\png'# 图片文件夹路径
output_pptx = path + r'\严守党纪国法,共筑教育净土333.pptx' # 输出的PPTX文件名
create_ppt_from_images(folder_path, output_pptx)


手动添加一个文本框,便于修改学校、发言人、日期

发给领导

后续我希望用Python也写一个下载微信图片的工具,以便能够二合一,快速下载图片和制作一个PPTX