Python + Pillow 批量处理图片实战:双色调、水印、压缩一站式脚本(Python 3.11 实测)
摘要:做内容创作的朋友迟早会被图片拖垮——每天要出的配图少则几张多则几十张,人工一张张改尺寸、加水印、压体积,一小时就没了。这篇文章用一个我自己在生产环境跑了半年的 Pillow 脚本,把"双色调调色、批量水印、智能压缩"三件事一次性解决。所有代码基于 Python 3.11 + Pillow 10.2 实测可运行,文末附完整脚本和参数说明。如果你也受困于每天的出图流程,这篇能帮你把一小时压到三分钟。一、为什么我放弃了在线修图,改自己写脚本先说背景。我平时要维护一个个人内容号,日更图文,每篇至少一张配图,多的时候一天要出七八张。一开始我用在线工具一张张改,后来发现三个坑怎么都绕不开。做内容这行,出图看着是小事,可日积月累就是个吞时间的大洞——你以为只花了十分钟,其实一周下来好几个小时就这么没了,而这些时间本可以用来多写两段、多回几个读者。第一,在线工具对批量不友好。选 20 张图、逐张上传、逐张下载,浏览器卡到怀疑人生,遇到网络一抖还得重来。更烦的是很多在线工具对单文件大小有限制,4K 原图直接传不上去。第二,调色风格不统一。今天暖橘、明天冷蓝,号看起来像精神分裂。内容号最重要的是"视觉一致性",读者刷到就能认出是你。可在线工具每次都得手动调参数,人一累、一赶就走样,几十张图调完色温能差出好几个档。第三,水印位置每次都要手调。一旦换图比例(横图、竖图、方图混着来),水印就跑偏,有的挡了主体,有的缩在角落看不见。我试过几个带批量水印的工具,要么不支持中文,要么水印是死的固定坐标,遇上不同比例就废。去年十月初我下定决心,用 Pillow 写一个本地批处理脚本,固定一套参数,以后只管丢图进去。半年下来,日常出图从每天 40 分钟降到 3 分钟,而且风格彻底统一了。下面把这套东西拆开讲,代码全部可以直接复制跑。环境先交代清楚,避免版本差异踩坑。我特意把版本锁死,是因为 Pillow 大版本之间 API 偶尔会变,比如老版本处理 WebP 参数名不一样,踩过一次就够了:Python 3.11.6(3.8+ 都行,但 3.11 速度快一截,批处理几百张图能省不少时间)Pillow 10.2.0(pip install Pillow==10.2.0)Windows 11 / macOS 14 都测过,脚本跨平台内存建议 8G 以上,处理 4K 图时 Pillow 峰值占用不低,4G 内存机器处理大图容易被杀进程# 创建隔离环境,别污染全局 python -m venv venv source venv/bin/activate # Windows 用 venv\Scripts\activate pip install Pillow==10.2.0 python -c "import PIL; print(PIL.__version__)"装好打印出版本号,确认是 10.2.0 再往下走。这步看着多余,实则是我踩坑换来的习惯——版本不对,后面所有代码可能白写。二、双色调(Duotone)调色:让配图统一成你的品牌色双色调是啥?简单讲,把一张彩色图只保留两种颜色:暗部映射成一种深色,亮部映射成一种浅色(通常是你的主题色)。Instagram 那种复古胶片感、很多设计号的统一暖橘风,底层都是双色调。它的好处是一次处理就把杂乱的彩色图统一到你的色板里,读者看一眼就知道是你的号。原理不复杂:先把图转成灰度,再把灰度值 0-255 重新映射到一段"从深色到浅色"的渐变上。Pillow 里可以用Image.quantize配合调色板,但更可控的做法是手动算每个像素。不过手动算太慢,处理一张 4K 图要几秒,批量就崩了。我用一个取巧的办法——用ImageOps.grayscale转灰,再用Image.composite拿灰度图当 mask 去混合两层纯色。这个思路关键在第三步,我下面细说。完整双色调函数如下:from PIL import Image, ImageOps, ImageEnhance def duotone(image, shadow, highlight): """ 双色调处理 :param image: PIL.Image 原图(RGB) :param shadow: 暗部颜色,如 (40, 20, 10) 深暖棕 :param highlight: 亮部颜色,如 (255, 200, 150) 暖橘 :return: 双色调后的 Image """ # 1. 转灰度,双色调的本质是灰度重映射 gray = ImageOps.grayscale(image) # 2. 把 0-255 灰度归一化到 0-1

相关新闻

Django民宿数据可视化系统开发指南:从源码运行到避坑实战

Django民宿数据可视化系统开发指南:从源码运行到避坑实战

简介:在数据驱动业务决策的背景下,数据可视化系统成为直观呈现海量信息、辅助分析的关键工具。其核心原理是将原始数据经过清洗、聚合后,通过图表接口映射为可交互的视觉元素。依托Django框架的MVT架构与ORM机制,开发者能高效实现…

2026/10/18 22:06:26 阅读更多 →
JavaWeb网上书店系统从零跑通:Servlet+JSP+JDBC避坑指南

JavaWeb网上书店系统从零跑通:Servlet+JSP+JDBC避坑指南

简介:这是一份课程设计级的Java网上书店及书店管理系统完整项目源码包,面向计算机专业毕业生、课程设计学生以及需要Java Web实战的初学者,解决从零搭建图书在线销售与后台管理系统的需求。系统分为顾客和管理员双角色,覆盖图书浏…

2026/10/18 22:06:26 阅读更多 →
SSM购物网站部署实战:解决404、乱码、数据库连接三大痛点

SSM购物网站部署实战:解决404、乱码、数据库连接三大痛点

简介:本资源是一套完整的Java毕业设计实战项目,面向计算机专业本科生及Java初学者,解决课程设计、期末大作业与毕业设计选题难、部署卡顿、代码难理解等实际问题。项目基于SSM(SpringSpringMVCMyBatis)框架开发&#x…

2026/10/18 22:06:26 阅读更多 →

最新新闻

STATA外部命令资源库搭建:从adopath到源码管理的完整方案

STATA外部命令资源库搭建:从adopath到源码管理的完整方案

简介:面向使用STATA开展数据分析、统计与计量经济学研究的学者、研究人员及学生,这份外部命令资源库将分散在官方社区、个人主页等处的第三方扩展工具汇集一处,有效解决外部命令获取渠道不一、版本兼容难查等问题,降低建模前的环境…

2026/10/19 0:46:07 阅读更多 →
MATLAB实现电力系统潮流计算:从导纳矩阵到牛顿法收敛

MATLAB实现电力系统潮流计算:从导纳矩阵到牛顿法收敛

简介:本资源是一份面向电气工程专业本科生及电力系统初学者的MATLAB实践教学文档,聚焦电力系统核心基础——潮流计算的原理实现与编程落地。文档完整阐述牛顿-拉夫逊法(直角坐标形式)的数学建模逻辑、节点导纳矩阵构建方法、程序变…

2026/10/19 0:46:07 阅读更多 →
豆包读取电商客服聊天窗口:本机客户端走本地端口即可完成会话监听

豆包读取电商客服聊天窗口:本机客户端走本地端口即可完成会话监听

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:45:07 阅读更多 →
【Mac】vscode 配置 GD32E230CXXX 开发环境:从工具链到烧录的完整落地

【Mac】vscode 配置 GD32E230CXXX 开发环境:从工具链到烧录的完整落地

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:45:07 阅读更多 →
大模型本地部署体积对照:从0.5B到70B量化版本配置清单

大模型本地部署体积对照:从0.5B到70B量化版本配置清单

大模型本地部署这件事,聊起来都是算力、精度、上下文,但真正动手之前,第一道门槛其实是“机器能不能装下”。我最近把一套开源模型家族的多个版本在本地环境里来回实测了几轮,从最小的0.5B到70B量化版都跑过一遍,最后整…

2026/10/19 0:44:06 阅读更多 →
疲劳驾驶数据集图片与XML标注不匹配?清洗与YOLO转换指南

疲劳驾驶数据集图片与XML标注不匹配?清洗与YOLO转换指南

简介:这是一份面向深度学习和图像识别入门练习的疲劳驾驶监测数据集,包含人体疲劳状态下的真实照片,可重点将打哈欠时的张嘴状态与闭眼状态作为疲劳判定标准,适合有一定Python基础、正在学习目标检测或图像分类的初学者&#xff0…

2026/10/19 0:44:06 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →