影刀RPA 图片批量压缩与格式转换:处理大量素材
title: “影刀RPA 图片批量压缩与格式转换处理大量素材”date: 2026-07-01author: 林焱影刀RPA 图片批量压缩与格式转换处理大量素材电商运营有几百张产品图需要统一压缩到500KB以内、统一转成JPEG、统一加水印、统一改尺寸……这类批量处理任务用影刀Pillow分分钟搞定效果比PS批处理更灵活。什么情况用什么适合批量处理的场景电商主图/详情图统一规格尺寸、格式、大小新闻稿图片批量压缩后发邮件用户上传图片自动压缩节省存储素材图片统一加品牌水印不适合的场景需要专业修图色彩矫正、抠图还是用PS只有几张图手动处理更快怎么做准备工作安装依赖【影刀操作】添加【Python】指令importsubprocess subprocess.run([pip,install,Pillow],capture_outputTrue)print(Pillow安装完成)方法1批量压缩图片到指定大小【影刀操作】添加【Python】指令fromPILimportImageimportosdefcompress_image(input_path,output_path,target_size_kb500,min_quality30): 压缩图片到指定大小KB target_size_kb: 目标大小KB min_quality: 最低质量避免压缩过度 imgImage.open(input_path)# 如果是PNG或其他格式转为RGBJPEG不支持透明通道ifimg.modein(RGBA,P,LA):# 透明背景换成白色backgroundImage.new(RGB,img.size,(255,255,255))ifimg.modeRGBA:background.paste(img,maskimg.split()[3])else:background.paste(img)imgbackgroundelifimg.mode!RGB:imgimg.convert(RGB)# 检查原始大小original_sizeos.path.getsize(input_path)/1024iforiginal_sizetarget_size_kb:# 已经够小只做格式转换img.save(output_path,JPEG,quality85,optimizeTrue)print(f无需压缩{os.path.basename(input_path)}{original_size:.0f}KB)return# 二分法找到合适的quality值quality_low,quality_highmin_quality,95best_outputNonewhilequality_lowquality_high:quality(quality_lowquality_high)//2importiobufferio.BytesIO()img.save(buffer,JPEG,qualityquality,optimizeTrue)size_kbbuffer.tell()/1024ifsize_kbtarget_size_kb:best_outputbuffer.getvalue()quality_lowquality1# 尝试更高质量else:quality_highquality-1# 继续压缩ifbest_output:withopen(output_path,wb)asf:f.write(best_output)final_sizeos.path.getsize(output_path)/1024print(f压缩完成{os.path.basename(input_path)}{original_size:.0f}KB →{final_size:.0f}KB)else:# 质量已经降到最低直接保存img.save(output_path,JPEG,qualitymin_quality,optimizeTrue)print(f压缩至最低质量{os.path.basename(input_path)})# 批量处理input_dirrC:\原始图片output_dirrC:\压缩图片os.makedirs(output_dir,exist_okTrue)image_exts{.jpg,.jpeg,.png,.bmp,.tiff,.webp}processed0forfilenameinos.listdir(input_dir):extos.path.splitext(filename)[1].lower()ifextnotinimage_exts:continueinput_pathos.path.join(input_dir,filename)# 输出统一用jpg后缀output_nameos.path.splitext(filename)[0].jpgoutput_pathos.path.join(output_dir,output_name)compress_image(input_path,output_path,target_size_kb500)processed1print(f\n处理完成共处理{processed}张图片)yda.set_variable(processed_count,processed)方法2批量调整图片尺寸【影刀操作】添加【Python】指令fromPILimportImageimportosdefresize_image(input_path,output_path,target_width800,target_heightNone,modefit,fill_color(255,255,255)): mode: fit - 等比缩放放在目标尺寸内不裁剪可能有留白 fill - 裁剪到精确尺寸 stretch - 强制拉伸到目标尺寸 imgImage.open(input_path)orig_w,orig_himg.sizeiftarget_heightisNone:# 只指定宽度等比缩放ratiotarget_width/orig_w target_heightint(orig_h*ratio)ifmodefit:img.thumbnail((target_width,target_height),Image.LANCZOS)# 居中放置周围填充背景色backgroundImage.new(RGB,(target_width,target_height),fill_color)offset((target_width-img.width)//2,(target_height-img.height)//2)background.paste(img,offset)resultbackgroundelifmodefill:# 先缩放到覆盖目标尺寸再中心裁剪ratiomax(target_width/orig_w,target_height/orig_h)new_wint(orig_w*ratio)new_hint(orig_h*ratio)imgimg.resize((new_w,new_h),Image.LANCZOS)# 中心裁剪left(new_w-target_width)//2top(new_h-target_height)//2resultimg.crop((left,top,lefttarget_width,toptarget_height))else:# stretchresultimg.resize((target_width,target_height),Image.LANCZOS)ifresult.mode!RGB:resultresult.convert(RGB)result.save(output_path,JPEG,quality90,optimizeTrue)# 批量处理电商主图统一800x800input_dirrC:\商品图片\原图output_dirrC:\商品图片\800x800os.makedirs(output_dir,exist_okTrue)forfilenameinos.listdir(input_dir):iffilename.lower().endswith((.jpg,.jpeg,.png)):input_pathos.path.join(input_dir,filename)output_pathos.path.join(output_dir,os.path.splitext(filename)[0].jpg)resize_image(input_path,output_path,800,800,modefill)print(f处理{filename})方法3批量格式转换【影刀操作】fromPILimportImageimportosdefconvert_format(input_dir,output_dir,from_formatpng,to_formatjpg,quality90):批量转换格式os.makedirs(output_dir,exist_okTrue)count0forfilenameinos.listdir(input_dir):ifnotfilename.lower().endswith(.from_format):continueinput_pathos.path.join(input_dir,filename)output_filenameos.path.splitext(filename)[0].to_format output_pathos.path.join(output_dir,output_filename)imgImage.open(input_path)ifto_format.lower()in(jpg,jpeg)andimg.modein(RGBA,P):bgImage.new(RGB,img.size,(255,255,255))ifimg.modeRGBA:bg.paste(img,maskimg.split()[3])else:bg.paste(img)imgbg save_kwargs{quality:quality,optimize:True}ifto_format.lower()in(jpg,jpeg)else{}img.save(output_path,**save_kwargs)count1print(f格式转换完成{count}张{from_format}→{to_format})returncount# PNG批量转JPGconvert_format(rC:\图片\PNG,rC:\图片\JPG,png,jpg)有什么坑坑1PNG透明背景变黑色PNG图有Alpha透明通道直接保存JPEG时透明区域变成黑色而非白色。解决方法保存前先把透明通道合并到白色背景代码里已处理。坑2CMYK格式的图片无法处理印刷厂给的图片是CMYK颜色模式Pillow处理某些CMYK图会出错。解决方法img img.convert(RGB)先转成RGB。坑3图片旋转方向不对手机拍的照片有EXIF旋转信息Pillow默认不处理导致某些图片显示方向不对。解决方法fromPILimportImageOps imgImageOps.exif_transpose(img)# 自动根据EXIF旋转坑4文件名有中文导致报错某些系统路径里的中文文件名处理有问题。解决方法用pathlib.Path代替字符串路径frompathlibimportPathforpinPath(input_dir).glob(*.png):imgImage.open(str(p))总结图片批量处理是Pillow最擅长的场景。压缩用二分法找quality值、调整尺寸区分fit/fill/stretch模式、格式转换注意RGBA→RGB。三个技术点搞清楚几百张图片的处理任务几分钟搞定。

相关新闻

Fiddler Web Debugger技术深度解析:网络调试与流量分析架构实践

Fiddler Web Debugger技术深度解析:网络调试与流量分析架构实践

Fiddler Web Debugger技术深度解析:网络调试与流量分析架构实践 【免费下载链接】zh-fiddler Fiddler Web Debugger 中文版 项目地址: https://gitcode.com/gh_mirrors/zh/zh-fiddler Fiddler Web Debugger中文版作为一款专业的HTTP/HTTPS网络调试工具&#…

2026/7/13 1:41:55 阅读更多 →
模板驱动型文档自动化:从填空题到智能装配流水线

模板驱动型文档自动化:从填空题到智能装配流水线

1. 项目概述:用模板把文档生产变成“填空题”你有没有过这种体验:每周要交三份客户方案,每份结构雷同——封面、目录、痛点分析、解决方案、报价页、服务承诺——但每次都要从零新建Word、手动调格式、复制粘贴旧内容、反复检查页眉页脚是否错…

2026/7/13 1:41:55 阅读更多 →
如何快速将位图转换为矢量图:Vectorizer完全指南

如何快速将位图转换为矢量图:Vectorizer完全指南

如何快速将位图转换为矢量图:Vectorizer完全指南 【免费下载链接】vectorizer Potrace based multi-colored raster to vector tracer. Inputs PNG/JPG returns SVG 项目地址: https://gitcode.com/gh_mirrors/ve/vectorizer 在数字设计领域,图片…

2026/7/13 1:39:53 阅读更多 →

最新新闻

采矿车、高空车、消防车都在用:PQ Controls 非接触手柄凭什么撑过1000万次?

采矿车、高空车、消防车都在用:PQ Controls 非接触手柄凭什么撑过1000万次?

在采矿自卸车、高空作业平台、消防云梯及林业机械等户外非公路装备上,操控手柄是操作员与机器的核心交互接口。这类场景的特点是粉尘高、温差宽、振动大、日操作频次极高,传统电位器式操纵杆的电刷磨损与触点氧化问题往往难以撑过完整生命周期。成立于19…

2026/7/13 2:46:20 阅读更多 →
信息学奥赛经典题“笨小猴”的 3 种时间复杂度优化思路解析

信息学奥赛经典题“笨小猴”的 3 种时间复杂度优化思路解析

信息学奥赛经典题“笨小猴”的3种时间复杂度优化思路解析引言在信息学竞赛的漫长发展历程中,"笨小猴"这道题目以其简洁的题意和丰富的解题思路,成为了检验选手算法思维能力的经典案例。这道题目要求统计单词中各字母出现的频率,找出…

2026/7/13 2:44:19 阅读更多 →
AI龙虾智能体选哪家好

AI龙虾智能体选哪家好

很多做外贸拓客、企业数字化办公的朋友,找OpenClaw龙虾本地部署的时候,常会碰到安装折腾很久出问题、功能不全、数据安全没保障的情况,AI龙虾智能体选哪家好,今天给大家讲清楚专业部署的真实情况。大迈国际电子商务广州有限公司&a…

2026/7/13 2:44:19 阅读更多 →
Windows驱动存储清理终极指南:3步解决系统臃肿问题

Windows驱动存储清理终极指南:3步解决系统臃肿问题

Windows驱动存储清理终极指南:3步解决系统臃肿问题 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer Driver Store Explorer(RAPR) 是一款专业的Window…

2026/7/13 2:42:19 阅读更多 →
论文选题可以免费生成的AI写作辅助网站有哪些

论文选题可以免费生成的AI写作辅助网站有哪些

免费生成开题报告的工具分学术专用工具、通用大模型、轻量辅助工具三类,以下是 2026 年 7 月实测可用的免费 / 限免工具,附核心功能、免费额度与适用场景,可直接落地。一、免费开题报告生成工具汇总(按场景分类) 工具名…

2026/7/13 2:40:18 阅读更多 →
TFX建模流水线:生产级机器学习的工程化实践指南

TFX建模流水线:生产级机器学习的工程化实践指南

1. 项目概述:为什么“建模流水线”不是锦上添花,而是生产级机器学习的生死线你有没有遇到过这样的场景:在Jupyter里调出一个98%准确率的模型,兴奋地发给产品团队,结果对方回一句:“这个模型怎么集成进API&a…

2026/7/13 2:38:18 阅读更多 →

日新闻

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 你是否曾经想要调整Palwor…

2026/7/13 0:01:19 阅读更多 →
浦东旧模块回收哪家强?专业评测带你一探究竟

浦东旧模块回收哪家强?专业评测带你一探究竟

于科技迅猛飞速迭代的当下此刻, 旧模块的回收处置, 不但关联着资源的再度利用, 而且更牵扯到数据安全以及环保合规事宜。你是不是也正为那堆积得如同山峦般的旧模块而发愁? 是不是不清楚该怎样安全且高效地去处理它们? 别忧心烦恼, 就在今日, 我会以具备权威影响力的自媒体博…

2026/7/13 0:01:19 阅读更多 →
卡梅德生物技术快报|重组蛋白的表达和纯化:IMAC 金属螯合色谱全流程工艺手册|基质 - 配基 - 金属离子匹配与蛋白质分离纯化参数优化

卡梅德生物技术快报|重组蛋白的表达和纯化:IMAC 金属螯合色谱全流程工艺手册|基质 - 配基 - 金属离子匹配与蛋白质分离纯化参数优化

1 研究背景与现存技术痛点(提出问题)基因工程、蛋白质组学、生物制药研发流程中,蛋白质分离纯化是决定下游实验成败的关键环节。当前实验室常规蛋白质分离纯化工艺存在三类难以标准化的技术瓶颈:传统离子交换、分子筛层析无特异性…

2026/7/13 0:05:20 阅读更多 →

周新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/12 0:03:13 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/12 0:03:14 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/12 0:03:14 阅读更多 →

月新闻