Python 图像处理必备的 15 个基本技能 🎨

🖼️ 前言:当程序员遇上修图

某天加班,老板丢来一堆图片,让我批量改尺寸、加水印、转换格式。我盯着 Photoshop,沉思了一下------这要是手动改,手都点麻了。😵‍💫

程序员的思路是:能不能写个 Python 脚本自动化处理?

于是,一顿 查资料,发现了 Python 里超强的图像处理库------Pillow(PIL 的升级版)。用它可以做各种图片操作,轻松解决老板的需求!🎉

今天就来给大家盘点 15 个 Pillow 必背的技能,让你玩转 Python 图像处理!💡


1️⃣ 安装 Pillow

开始之前,先安装库:

bash 复制代码
pip install pillow

然后在 Python 里导入:

python 复制代码
from PIL import Image

如果这步报错,可能是 pip 版本太旧,更新一下就行:

bash 复制代码
pip install --upgrade pip

2️⃣ 打开和显示图片

有了 Pillow,我们可以轻松打开图片:

python 复制代码
img = Image.open("example.jpg")
img.show()  # 在默认图片查看器中打开

💡 注意show() 只是临时打开,图片并不会修改。


3️⃣ 获取图片信息

看看图片尺寸、格式等信息:

python 复制代码
print(img.format)  # JPEG
print(img.size)    # (宽, 高)
print(img.mode)    # RGB

4️⃣ 调整图片尺寸(缩放)

想要统一图片尺寸?试试 resize()

python 复制代码
resized_img = img.resize((300, 200))  # 设定新尺寸
resized_img.show()

💡 注意 :缩放可能会失真,可以用 thumbnail() 按比例缩小:

python 复制代码
img.thumbnail((300, 200))
img.show()

5️⃣ 裁剪图片

截取图片中某个区域,比如剪裁脸部:

python 复制代码
box = (100, 100, 400, 400)  # (左, 上, 右, 下)
cropped_img = img.crop(box)
cropped_img.show()

6️⃣ 旋转和翻转

让图片转个圈:

python 复制代码
rotated_img = img.rotate(45)  # 顺时针旋转 45°
rotated_img.show()

水平翻转(镜像):

python 复制代码
flipped_img = img.transpose(Image.FLIP_LEFT_RIGHT)
flipped_img.show()

7️⃣ 转换图片模式(灰度图、RGBA)

黑白风格:

python 复制代码
gray_img = img.convert("L")
gray_img.show()

透明背景(如果原图支持):

python 复制代码
rgba_img = img.convert("RGBA")
rgba_img.show()

8️⃣ 添加水印

在图片右下角加水印(用 paste()):

python 复制代码
from PIL import Image,ImageEnhance

img = Image.open("background.png").convert("RGBA")
watermark = Image.open("watermark.png").convert("RGBA")

alpha = watermark.split()[3]  # 提取透明通道
# 调整透明度(0.5 代表 50% 透明度)
alpha = ImageEnhance.Brightness(alpha).enhance(0.5)

# 重新组合水印图像
watermark.putalpha(alpha)

img.paste(watermark, (img.width - watermark.width, img.height - watermark.height), watermark)
img.show()

代码注释

  • convert("RGBA"):确保图片是支持透明通道的格式。
  • watermark.split()[3]:提取水印图片的 Alpha 通道 作为透明度掩码。
  • convert("L"):如果出现 bad transparency mask 错误,可以将watermark图片转换为 L(灰度)模式,符合 Pillow 要求。
  • paste():使用 mask 作为透明度通道,使水印正确叠加。
  • 可以使用 ImageEnhance.Brightness() 调整透明度。

9️⃣ 调整亮度、对比度

ImageEnhance 轻松调节:

python 复制代码
from PIL import ImageEnhance

enhancer = ImageEnhance.Brightness(img)
brighter_img = enhancer.enhance(1.5)  # 亮度增加 1.5 倍
brighter_img.show()

对比度、锐化、颜色增强也类似。


🔟 叠加文字(加水印文字)

想加个"Python 牛逼"在图片上?

python 复制代码
from PIL import ImageDraw, ImageFont

draw = ImageDraw.Draw(img)
font = ImageFont.truetype("arial.ttf", 40)  # 选择字体

draw.text((50, 50), "Python 牛逼", fill="red", font=font)
img.show()

💡 注意 :Windows 需要提供 .ttf 字体文件,Linux/macOS 可用 "/usr/share/fonts/..." 里的字体。


1️⃣1️⃣ 批量处理图片

假设你要批量压缩图片:

python 复制代码
import os

folder = "images"
for filename in os.listdir(folder):
    if filename.endswith((".jpg", ".jpeg", ".png")):
        img = Image.open(os.path.join(folder, filename))
        img = img.resize((500, 500))
        img.save(os.path.join("output", filename))

💡 注意 :缩放可能会失真,可以用 上面学到的thumbnail() 按比例缩小


1️⃣2️⃣ 图片格式转换

把 PNG 转成 JPG:

python 复制代码
img = Image.open("example.png")
img.convert("RGB").save("example.jpg", "JPEG")

1️⃣3️⃣ 创建纯色图片

生成一张纯红色的图片:

python 复制代码
img = Image.new("RGB", (300, 300), "red")
img.show()

1️⃣4️⃣ 读取像素点 & 修改像素

取一个像素的 RGB 值:

python 复制代码
print(img.getpixel((10, 10)))  # (255, 0, 0)

设置像素颜色:

python 复制代码
img.putpixel((10, 10), (0, 255, 0))
img.show()

1️⃣5️⃣ 图片保存

img.save()Pillow 提供的用于保存图片的方法,支持多种格式,参数灵活,可以控制图片质量、透明度等。

基本用法

python 复制代码
img.save("output.jpg")

注意

  • output.jpg:保存的文件名,格式由后缀决定(如 .jpg.png)。
  • 默认会覆盖同名文件,需小心操作。

指定格式

有时候你想保存为不同的格式,可以这样:

python 复制代码
img.save("output.png", format="PNG")

💡 注意 :通常 Pillow 会根据文件后缀自动判断格式,但如果后缀不标准,你需要手动指定 format

控制 JPEG 质量

JPEG 图片可以调整压缩质量(0~100),值越高质量越好,文件越大:

python 复制代码
img.save("output.jpg", quality=85)

💡 默认 quality=75 ,一般 85 就够了,超过 95 肉眼几乎无区别,但文件更大。

透明背景(PNG)

如果你保存 PNG,并且图片带透明通道(RGBA 模式),可以这样:

python 复制代码
img.save("output.png", transparency=128)  # 透明度 0-255

或者:

python 复制代码
img.save("output.png", optimize=True)  # 自动优化大小

💡 如果报 ValueError: bad transparency mask,说明透明通道有问题,可以试试:

python 复制代码
if img.mode != "RGBA":
    img = img.convert("RGBA")

去掉 EXIF 信息

有时候图片会带 EXIF 信息(如拍摄时间、GPS 等),如果不想保存:

python 复制代码
img.save("output.jpg", quality=85, exif=None)

🎉 总结

Pillow 让 Python 处理图片变得超级简单!今天我们学会了 15 个核心技能,包括: ✅ 打开、保存、格式转换 ✅ 调整尺寸、裁剪、旋转 ✅ 添加文字、水印、滤镜 ✅ 读取 & 修改像素

有了这些技能,下一次老板再让你批量改图,你就可以用 Python 轻松搞定!🚀

你最喜欢哪个技巧?评论区聊聊!💬

相关推荐
正经摸鱼2 分钟前
classpath与classpath*实现逻辑
后端·spring
努力的搬砖人.3 分钟前
maven如何使用
java·后端·面试·maven
小码编匠6 分钟前
.NET 验证码生成神器基于 SkiaSharp 的高性能方案
后端·c#·.net
风象南6 分钟前
SpringBoot中6种跨域请求解决方案
java·spring boot·后端
LucianaiB8 分钟前
拿到Offer,租房怎么办?看我用高德MCP+腾讯云MCP,帮你分分钟搞定!
前端·后端·cursor
vivo互联网技术8 分钟前
活动中台系统慢 SQL 治理实践
java·数据库·后端
用户175923421502814 分钟前
D3.js - 基本用法
前端·d3.js
满怀101516 分钟前
Python入门(5):异常处理
开发语言·python
莓事哒16 分钟前
使用pytesseract和Cookie登录古诗文网~(python爬虫)
爬虫·python·pycharm·cookie·pytessarct
赵钰老师21 分钟前
【Deepseek、ChatGPT】智能气候前沿:AI Agent结合机器学习与深度学习在全球气候变化驱动因素预测中的应用
人工智能·python·深度学习·机器学习·数据分析