Pillow库Image模块:图像处理全攻略

Image 是 Pillow 库的核心模块,提供图像处理的基础功能。

以下是 Image 模块中最常用的方法及其功能描述:

方法描述示例
Image.open(fp, mode='r')打开并识别图像文件img = Image.open('image.jpg')
Image.new(mode, size, color=0)创建新图像new_img = Image.new('RGB', (500, 500), 'blue')
Image.save(fp, format=None, **params)保存图像img.save('output.png')
Image.show(title=None, command=None)显示图像img.show()
Image.resize(size, resample=None, box=None)调整图像大小img.resize((200, 200))
Image.rotate(angle, resample=0, expand=0)旋转图像img.rotate(45)
Image.crop(box=None)裁剪图像img.crop((100, 100, 400, 400))
Image.paste(im, box=None, mask=None)粘贴图像img.paste(logo, (50, 50))
Image.convert(mode, matrix=None, dither=None)转换图像模式img.convert('L')
Image.filter(filter)应用滤镜img.filter(ImageFilter.BLUR)
Image.copy()复制图像copy = img.copy()
Image.thumbnail(size)创建缩略图img.thumbnail((100, 100))
Image.getpixel(xy)获取像素值pixel = img.getpixel((50, 50))
Image.putpixel(xy, value)设置像素值img.putpixel((50, 50), (255, 0, 0))
Image.split()分离通道r, g, b = img.split()
Image.merge(mode, bands)合并通道Image.merge('RGB', (r, g, b))

3. 常用属性

除了方法外,Image 对象还有一些重要属性:

属性描述示例
format图像格式print(img.format)
size图像尺寸 (宽, 高)print(img.size)
width图像宽度print(img.width)
height图像高度print(img.height)
mode图像模式print(img.mode)
info图像相关信息字典print(img.info)

实际应用示例

基本图像操作

实例

from PIL import Image

# 打开图像
img = Image.open('example.jpg')

# 显示图像信息
print(f"格式: {img.format}, 大小: {img.size}, 模式: {img.mode}")

# 调整大小并保存
resized_img = img.resize((300, 300))
resized_img.save('resized_example.jpg')

# 转换为灰度图
gray_img = img.convert('L')
gray_img.save('gray_example.jpg')

图像处理

实例

from PIL import Image, ImageFilter

img = Image.open('example.jpg')

# 应用模糊滤镜
blurred = img.filter(ImageFilter.BLUR)
blurred.save('blurred.jpg')

# 应用轮廓滤镜
contour = img.filter(ImageFilter.CONTOUR)
contour.save('contour.jpg')

# 旋转图像
rotated = img.rotate(45, expand=True)
rotated.save('rotated.jpg')

高级功能

图像合成

实例

from PIL import Image

# 打开两张图像
img1 = Image.open('background.jpg')
img2 = Image.open('foreground.png')

# 确保两张图像大小一致
img2 = img2.resize(img1.size)

# 合成图像 (假设 foreground.png 有透明通道)
composite = Image.alpha_composite(img1.convert('RGBA'), img2.convert('RGBA'))
composite.save('composite.png')

批量处理

实例

import os
from PIL import Image

input_dir = 'input_images/'
output_dir = 'output_images/'

if not os.path.exists(output_dir):
    os.makedirs(output_dir)

for filename in os.listdir(input_dir):
    if filename.endswith('.jpg'):
        img = Image.open(os.path.join(input_dir, filename))
        # 转换为灰度并保存
        gray_img = img.convert('L')
        gray_img.save(os.path.join(output_dir, f"gray_{filename}"))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值