侧边栏壁纸
博主头像
phphi

phphi's blog

  • 累计撰写 51 篇文章
  • 累计收到 0 条评论

Day28 - Python处理图像

2026-4-24 / 0 评论 / 2 阅读

图像处理

Pillow 库

Pillow 是 Python 图像处理的基础库,基于 PIL 发展而来。

pip install pillow

基本操作

from PIL import Image

img = Image.open('photo.jpg')
print(img.format)   # JPEG/PNG
print(img.size)     # (width, height)
print(img.mode)     # RGB/RGBA/L

img.show()
img.save('output.png')

裁剪与缩放

# 裁剪 (左, 上, 右, 下)
cropped = img.crop((100, 100, 400, 400))
cropped.show()

# 缩放
resized = img.resize((200, 200))  # 指定尺寸
img.thumbnail((128, 128))          # 按比例缩小(原地修改)

旋转与翻转

rotated = img.rotate(45)           # 旋转45度
flipped_h = img.transpose(Image.FLIP_LEFT_RIGHT)   # 水平翻转
flipped_v = img.transpose(Image.FLIP_TOP_BOTTOM)   # 垂直翻转

粘贴与合成

from PIL import Image

bg = Image.open('background.jpg')
overlay = Image.open('logo.png').resize((100, 100))

# 将 overlay 粘贴到 bg 的指定位置
bg.paste(overlay, (50, 50))
bg.save('composed.jpg')

滤镜效果

from PIL import ImageFilter, ImageEnhance

img = Image.open('photo.jpg')
img.filter(ImageFilter.CONTOUR)   # 轮廓
img.filter(ImageFilter.BLUR)      # 模糊
img.filter(ImageFilter.EDGE_ENHANCE)  # 边缘增强

调整亮度/对比度

enhancer = ImageEnhance.Brightness(img)
brighter = enhancer.enhance(1.5)  # 1.5倍亮度

enhancer = ImageEnhance.Contrast(img)
contrasted = enhancer.enhance(1.3)  # 1.3倍对比度

绘图操作

from PIL import Image, ImageDraw, ImageFont

# 创建空白图像
canvas = Image.new('RGB', (800, 600), 'white')
draw = ImageDraw.Draw(canvas)

# 绘制图形
draw.rectangle((100, 100, 300, 300), outline='red', width=2)   # 矩形
draw.ellipse((100, 100, 300, 300), outline='blue')            # 椭圆
draw.line((0, 0, 800, 600), fill='green', width=3)             # 直线

# 绘制文字
font = ImageFont.truetype('simsun.ttc', 32)
draw.text((300, 50), 'Hello, World!', fill='black', font=font)

canvas.save('drawn.png')

常用 RGB 颜色参考

颜色 RGB 颜色 RGB
(255,0,0) 绿 (0,255,0)
(0,0,255) (255,255,0)
(255,255,255) (0,0,0)

总结

  • Pillow:图像读写、缩放、裁剪、旋转、滤镜、绘图
  • Image.resize/thumbnail:调整尺寸
  • Image.paste:图像合成
  • ImageDraw:在图像上绑制形状和文字
  • 更高级图像处理可用 OpenCV(计算机视觉库)