Python 图像入门:Pillow 库实战,图片压缩、加水印、批量修改尺寸

发布时间:2026/10/8 6:46:13
Python 图像入门:Pillow 库实战,图片压缩、加水印、批量修改尺寸 前言在开发和日常工作中经常有批量处理图片的需求批量压缩图片大小、统一修改图片宽高、给图片添加文字水印、图片格式转换。手动用 PS 或者画图工具一张张处理效率极低。PillowPIL是 Python 最主流的图像处理库API 简单易用不需要深厚的图像算法基础就能完成绝大多数图片预处理工作。本文从安装到完整实战案例讲解 Pillow 常用功能实现批量图片处理脚本。一、环境安装Pillow 不是 Python 内置库使用 pip 安装pip install pillow安装完成后导入的时候使用from PIL import Image注意库名是 pillow导入模块名是 Image。支持 JPG、PNG、GIF 等常见图片格式。二、基础操作打开图片修改尺寸保存图片基础示例读取图片缩放图片等比例修改图片尺寸。图片缩放最关键一点保持原图比例防止图片拉伸变形。from PIL import Image def resize_image(input_path, output_path, target_width): img Image.open(input_path) # 获取原图宽高 w, h img.size # 等比例计算高度 target_height int(h * target_width / w) new_img img.resize((target_width, target_height), Image.Resampling.LANCZOS) new_img.save(output_path) print(f图片处理完成新尺寸{new_img.size}) resize_image(test.jpg, test_resize.jpg, 800)resize 的第二个参数是重采样算法LANCZOS 适合缩小图片保留更好清晰度。如果是老版本 Pillow写法是 Image.LANCZOS。三、实战 1批量压缩图片很多场景上传图片有大小限制需要在不明显降低画质前提下压缩图片体积。保存 JPG 图片时可以通过 quality 参数控制图片质量取值 0~95数值越低体积越小。import os from PIL import Image def batch_compress_img(folder_path, quality75): out_dir os.path.join(folder_path, output) if not os.path.exists(out_dir): os.mkdir(out_dir) # 遍历文件夹 for filename in os.listdir(folder_path): if filename.lower().endswith((jpg,jpeg)): img_path os.path.join(folder_path, filename) img Image.open(img_path) out_path os.path.join(out_dir, filename) img.save(out_path, qualityquality, optimizeTrue) print(f{filename} 压缩完成) if __name__ __main__: batch_compress_img(./img, quality70)optimizeTrue 参数会优化 JPG 文件的 Huffman 编码进一步减小文件体积。PNG 图片是无损压缩quality 参数对 PNG 无效。四、实战 2图片添加文字水印给图片增加版权文字水印Pillow 的 ImageDraw 绘制文字ImageFont 加载字体。from PIL import Image, ImageDraw, ImageFont def add_text_watermark(img_path, out_path, textCSDN版权): img Image.open(img_path).convert(RGBA) draw ImageDraw.Draw(img) # 设置字体Windows用simhei.ttfLinux/Mac需要更换字体路径 font ImageFont.truetype(simhei.ttf,36) w, h img.size # 在右下角绘制水印 draw.text((w-220, h-80), text, fontfont, fill(255,255,255,120)) img img.convert(RGB) img.save(out_path) add_text_watermark(test.jpg, water_test.jpg)RGBA 模式支持透明通道fill 最后一个参数是透明度0 完全透明255 不透明。注意字体文件路径问题Linux 环境没有 simhei 黑体需要自行安装字体。五、实战 3图片格式转换PNG 转 JPGPNG 转 JPG 的时候需要注意JPG 不支持透明通道如果原图 PNG 带透明要填充白色背景。def png_to_jpg(png_path, jpg_path): img Image.open(png_path) if img.mode RGBA: background Image.new(RGB, img.size, (255,255,255)) background.paste(img, maskimg.split()[3]) background.save(jpg_path, quality90) else: img.convert(RGB).save(jpg_path)六、踩坑总结中文水印乱码字体文件不存在一定要指定系统存在的字体透明 PNG 转 JPG 报错必须新建白色背景画布大图片内存处理超大图片可以开启 Image.open (fp, r)按需加载图片方向部分手机拍摄照片存在 EXIF 旋转信息Pillow 打开不会自动旋转可以用imgimg.transpose(Image.Transpose.EXIF)校正。七、结语Pillow 非常适合轻量级图片处理对于图片分类、目标检测这类 AI 图像任务就需要 OpenCV 或者 TorchVision。掌握上面几个脚本可以直接用于素材批量处理、网站图片预处理。图片批量脚本是 Python 非常实用的小工具很多自媒体、运营人员都在用这类脚本提升效率。如果你有其他图片处理需求可以基于代码修改比如图片拼接、裁剪、生成缩略图。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询