如何用PIL从一张图片裁剪并粘贴到另一张?

9 投票
2 回答
12937 浏览
提问于 2025-04-16 16:04

我正在用PIL这个库,想从一张图片里复制一个矩形区域,然后把它粘贴到另一张图片上。这是我的代码:

import Image
ii = Image.open("ramza.png")
box = (70, 70, 30, 30)
region = ii.crop(box)
io = Image.open("template.png")
io.paste(region, box)
io.save("output.png")

但是我遇到了这个错误:

ValueError: 图片不匹配

你们有没有什么办法可以解决这个问题?

2 个回答

4

给未来的访问者:这个错误可能会出现,如果传给 pastebox 参数是小数(float)而不是整数(int)。

16

PIL的裁剪框是用四个像素坐标来定义的,格式是一个四元组:(左边, 上边, 右边, 下边)

要修正你的代码以获得一个30x30的裁剪区域:

box = (70, 70, 100, 100)

把它分解成几个部分:

x, y, w, h = (70, 70, 30, 30)
box = (x, y, x + w, y + h)

撰写回答