影刀RPA图片合并与批量处理完全指南:自动化图片操作实战

影刀RPA图片合并与批量处理完全指南:自动化图片操作实战 影刀RPA图片合并与批量处理完全指南自动化图片操作实战作者林焱哪些场景需要图片自动化做运营或电商的人会遇到这些需求把100张产品图片统一加上水印把多张截图拼成一张长图用于汇报批量压缩图片尺寸方便上传把多张表格截图合并成一个 PDF手工处理一张图一分钟100张就是100分钟。影刀 Python 脚本可以把这些全部自动化。影刀原生图片功能影刀自带基础的图片操作指令在图片处理分类下截图对指定区域截图保存到本地图片识别OCR 文字识别图像模板匹配获取元素截图对指定元素单独截图原生功能够用于截图 → 保存场景但合并、水印、批量压缩这类操作需要配合 Python 脚本。核心工具Python Pillow 库Pillow 是 Python 最主流的图片处理库影刀可以直接调用。安装到影刀的 Python 环境拼多多店群自动化报活动上架pipinstallPillow实战1批量加水印需求把一个文件夹里的所有产品图片JPG/PNG都加上林焱出品的文字水印。流程设计// 影刀主流程 本地图片目录 C:/products/ 输出目录 C:/products_watermarked/ 水印文字 林焱出品 图片文件列表 获取文件夹中的文件列表(本地图片目录, 格式:*.jpg,*.png) For 图片路径 in 图片文件列表: 文件名 获取文件名(图片路径) 输出路径 输出目录 文件名 // 调用 Python 脚本加水印 执行Python脚本( 脚本内容: 水印脚本, 参数: { input_path: 图片路径, output_path: 输出路径, text: 水印文字 } ) 打印日志(已处理 文件名)Python 水印脚本fromPILimportImage,ImageDraw,ImageFontimportos# 从影刀传入的参数input_path{input_path}output_path{output_path}watermark_text{text}# 打开图片imgImage.open(input_path).convert(RGBA)width,heightimg.size# 创建透明水印层watermarkImage.new(RGBA,img.size,(0,0,0,0))drawImageDraw.Draw(watermark)# 设置字体如果没有指定字体用默认字体try:fontImageFont.truetype(C:/Windows/Fonts/msyh.ttc,36)except:fontImageFont.load_default()# 计算水印位置右下角bboxdraw.textbbox((0,0),watermark_text,fontfont)text_widthbbox[2]-bbox[0]text_heightbbox[3]-bbox[1]xwidth-text_width-20yheight-text_height-20# 绘制半透明水印draw.text((x,y),watermark_text,fill(255,255,255,128),fontfont)# 合并图层resultImage.alpha_composite(img,watermark)# 保存转回RGB以支持JPG格式ifoutput_path.lower().endswith(.jpg)oroutput_path.lower().endswith(.jpeg):resultresult.convert(RGB)os.makedirs(os.path.dirname(output_path),exist_okTrue)result.save(output_path)print(OK)实战2多张截图合并成长图需求把运营数据截图多张合并成一张长图方便在群里发汇报。Python 合并脚本fromPILimportImageimportos# 从影刀传入参数image_paths_str{image_paths}# 用|分隔的多个路径output_path{output_path}image_pathsimage_paths_str.split(|)# 打开所有图片images[Image.open(p)forpinimage_paths]# 计算合并后的尺寸垂直拼接max_widthmax(img.widthforimginimages)total_heightsum(img.heightforimginimages)# 创建空白画布resultImage.new(RGB,(max_width,total_height),(255,255,255))# 逐张粘贴current_y0forimginimages:# 如果宽度不一致居中对齐x_offset(max_width-img.width)//2result.paste(img,(x_offset,current_y))current_yimg.height result.save(output_path)print(f合并完成尺寸{max_width}x{total_height})影刀调用方式// 截多张图收集路径 截图1路径 C:/temp/screenshot_1.png 截图2路径 C:/temp/screenshot_2.png 截图3路径 C:/temp/screenshot_3.png // 用 | 拼接路径 截图路径合并 截图1路径 | 截图2路径 | 截图3路径 // 调用 Python 脚本合并 执行Python脚本( 脚本: 合并脚本, 参数: { image_paths: 截图路径合并, output_path: C:/reports/combined.png } )实战3批量压缩图片需求上传前批量压缩图片到指定大小比如最大 500KB保持画质。fromPILimportImageimportos input_path{input_path}output_path{output_path}max_size_kbint({max_size_kb})# 最大文件大小KBimgImage.open(input_path)# 如果图片是 RGBA 且要保存为 JPG先转换ifimg.modeRGBA:imgimg.convert(RGB)# 逐步降低质量直到文件大小满足要求quality95whilequality10:img.save(output_path,JPEG,qualityquality)file_size_kbos.path.getsize(output_path)/1024iffile_size_kbmax_size_kb:breakquality-5print(f最终质量{quality}文件大小{file_size_kb:.1f}KB)实战4截图自动标注给截图加上矩形标注框常用于教程截图、问题截图标记fromPILimportImage,ImageDraw input_path{input_path}output_path{output_path}# 标注区域x1,y1,x2,y2rect[int(x)forxin{rect}.split(,)]imgImage.open(input_path)drawImageDraw.Draw(img)# 画红色矩形框draw.rectangle(rect,outline(255,0,0),width3)img.save(output_path)print(标注完成)影刀调用时传入坐标执行Python脚本(参数: {rect: 100,200,400,350, ...})踩坑记录坑1中文字体找不到TEMU店群矩阵自动化运营核价报活动在ImageDraw.text()里指定中文字体时路径不对会导致乱码或报错。检查系统字体目录C:/Windows/Fonts/常用中文字体文件微软雅黑msyh.ttc宋体simsun.ttc黑体simhei.ttf坑2PNG 转 JPG 时黑背景RGBA 模式有透明通道的 PNG 直接保存为 JPG 会变成黑底因为 JPG 不支持透明度。正确做法ifimg.modeRGBA:# 先把透明通道和白色背景合并backgroundImage.new(RGB,img.size,(255,255,255))background.paste(img,maskimg.split()[3])# 用 alpha 通道作为 maskimgbackground坑3合并后图片质量下降Pillow 默认 JPEG 保存质量是 75如果图片质量很重要要显式指定img.save(output_path,JPEG,quality95)坑4超大图片处理时内存溢出一次性把100张4K图片全部加载到内存里会OOM。解决方法逐张处理处理完一张立刻释放内存imgImage.open(path)# ... 处理img.save(output_path)img.close()# 释放内存delimg小结影刀图片自动化的核心思路截图、元素图用影刀原生指令图片合并、水印、压缩、标注用执行Python脚本调用 Pillow典型工作流影刀做流程控制文件列表、路径拼接、循环 Python 做图片处理Pillow。作者林焱飞行社 RPA 实践记录